| 
									
										
										
										
											2024-04-15 14:50:28 +08:00
										 |  |  | use collab::core::collab::DataSource;
 | 
					
						
							| 
									
										
										
										
											2023-10-10 19:05:55 +08:00
										 |  |  | use collab_entity::{CollabObject, CollabType};
 | 
					
						
							| 
									
										
										
										
											2023-08-12 17:36:31 +08:00
										 |  |  | use uuid::Uuid;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-11 14:42:03 +08:00
										 |  |  | use flowy_user_pub::entities::AuthResponse;
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  | use lib_infra::box_any::BoxAny;
 | 
					
						
							| 
									
										
										
										
											2023-08-12 17:36:31 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | use crate::supabase_test::util::{
 | 
					
						
							| 
									
										
										
										
											2023-08-17 23:46:39 +08:00
										 |  |  |   collab_service, database_service, get_supabase_ci_config, third_party_sign_up_param,
 | 
					
						
							|  |  |  |   user_auth_service,
 | 
					
						
							| 
									
										
										
										
											2023-08-12 17:36:31 +08:00
										 |  |  | };
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | #[tokio::test]
 | 
					
						
							| 
									
										
										
										
											2023-09-17 17:14:34 +08:00
										 |  |  | async fn supabase_create_database_test() {
 | 
					
						
							| 
									
										
										
										
											2023-08-17 23:46:39 +08:00
										 |  |  |   if get_supabase_ci_config().is_none() {
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |     return;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let user_service = user_auth_service();
 | 
					
						
							|  |  |  |   let uuid = Uuid::new_v4().to_string();
 | 
					
						
							| 
									
										
										
										
											2023-08-17 23:46:39 +08:00
										 |  |  |   let params = third_party_sign_up_param(uuid);
 | 
					
						
							| 
									
										
										
										
											2023-10-02 17:22:22 +08:00
										 |  |  |   let user: AuthResponse = user_service.sign_up(BoxAny::new(params)).await.unwrap();
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   let collab_service = collab_service();
 | 
					
						
							|  |  |  |   let database_service = database_service();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let mut row_ids = vec![];
 | 
					
						
							|  |  |  |   for _i in 0..3 {
 | 
					
						
							|  |  |  |     let row_id = uuid::Uuid::new_v4().to_string();
 | 
					
						
							|  |  |  |     row_ids.push(row_id.clone());
 | 
					
						
							| 
									
										
										
										
											2023-09-17 17:14:34 +08:00
										 |  |  |     let collab_object = CollabObject::new(
 | 
					
						
							|  |  |  |       user.user_id,
 | 
					
						
							|  |  |  |       row_id,
 | 
					
						
							|  |  |  |       CollabType::DatabaseRow,
 | 
					
						
							|  |  |  |       user.latest_workspace.id.clone(),
 | 
					
						
							|  |  |  |       "fake_device_id".to_string(),
 | 
					
						
							|  |  |  |     );
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |     collab_service
 | 
					
						
							|  |  |  |       .send_update(&collab_object, 0, vec![1, 2, 3])
 | 
					
						
							|  |  |  |       .await
 | 
					
						
							|  |  |  |       .unwrap();
 | 
					
						
							|  |  |  |     collab_service
 | 
					
						
							|  |  |  |       .send_update(&collab_object, 0, vec![4, 5, 6])
 | 
					
						
							|  |  |  |       .await
 | 
					
						
							|  |  |  |       .unwrap();
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let updates_by_oid = database_service
 | 
					
						
							| 
									
										
										
										
											2024-02-04 05:49:45 +08:00
										 |  |  |     .batch_get_database_object_doc_state(row_ids, CollabType::DatabaseRow, "fake_workspace_id")
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |     .await
 | 
					
						
							|  |  |  |     .unwrap();
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   assert_eq!(updates_by_oid.len(), 3);
 | 
					
						
							| 
									
										
										
										
											2024-03-23 09:18:47 +08:00
										 |  |  |   for (_, source) in updates_by_oid {
 | 
					
						
							|  |  |  |     match source {
 | 
					
						
							| 
									
										
										
										
											2024-04-15 14:50:28 +08:00
										 |  |  |       DataSource::Disk => panic!("should not be from disk"),
 | 
					
						
							|  |  |  |       DataSource::DocStateV1(doc_state) => {
 | 
					
						
							| 
									
										
										
										
											2024-03-23 09:18:47 +08:00
										 |  |  |         assert_eq!(doc_state.len(), 2);
 | 
					
						
							|  |  |  |       },
 | 
					
						
							| 
									
										
										
										
											2024-04-15 14:50:28 +08:00
										 |  |  |       DataSource::DocStateV2(_) => {},
 | 
					
						
							| 
									
										
										
										
											2024-03-23 09:18:47 +08:00
										 |  |  |     }
 | 
					
						
							| 
									
										
										
										
											2023-07-29 09:46:24 +08:00
										 |  |  |   }
 | 
					
						
							|  |  |  | }
 |