public void DeleteEntityOnClientAndInsertNotRelatedRemote_InsertOnRemote() { var entity = new EntitySync { UniqueIdentifier = "AA" }; var entityToDelete = new EntitySync { UniqueIdentifier = "AB" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); Desktop.Repository <EntitySync, IEntitySync>().Save(entityToDelete); SyncRemote(); //INsert related on remote var related = new EntityRelated { RelatedId = entity.Id }; FirstRemote.Repository <EntityRelated, IEntityRelated>().Save(related); //Delete foreign key reference on desktop Desktop.Repository <EntitySync, IEntitySync>().Delete(entityToDelete); SyncRemote(); Assert.AreEqual(Desktop.Repository <EntitySync, IEntitySync>().Count(), 1); Assert.AreEqual(Desktop.Repository <EntityRelated, IEntityRelated>().Count(), 1); AssertSyncRepository(Desktop.Repository <EntityRelated, IEntityRelated>(), FirstRemote.Repository <EntityRelated, IEntityRelated>()); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void TwiceInsertNotInSameOrderWithUnicityConstraint_RelationShouldBeUpdated() { var entityDesktopA = new EntitySync { UniqueIdentifier = "A" }; var entityDesktopB = new EntitySync { UniqueIdentifier = "B" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entityDesktopA); Desktop.Repository <EntitySync, IEntitySync>().Save(entityDesktopB); var entityRemoteA = new EntitySync { UniqueIdentifier = "A" }; var entityRemoteB = new EntitySync { UniqueIdentifier = "B" }; FirstRemote.Repository <EntitySync, IEntitySync>().Save(entityRemoteB); FirstRemote.Repository <EntitySync, IEntitySync>().Save(entityRemoteA); var entityRelatedOnA = new EntityRelated { RelatedId = entityRemoteA.Id }; FirstRemote.Repository <EntityRelated, IEntityRelated>().Save(entityRelatedOnA); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void DeleteEntityOnCLientAndInsertRelatedOnRemote_DeleteRelatedOnRemote() { var entity = new EntitySync { UniqueIdentifier = "AA" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); SyncRemote(); //INsert related on remote var related = new EntityRelated { RelatedId = entity.Id }; FirstRemote.Repository <EntityRelated, IEntityRelated>().Save(related); //Delete foreign key reference on desktop Desktop.Repository <EntitySync, IEntitySync>().Delete(entity); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntityRelated, IEntityRelated>(), FirstRemote.Repository <EntityRelated, IEntityRelated>()); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void ConflictOnUpdatedEntityLinkedToAnInsertedEntity() { var entity = new EntitySync { UniqueIdentifier = "AA" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); var related = new EntityRelated { RelatedId = entity.Id }; Desktop.Repository <EntityRelated, IEntityRelated>().Save(related); SyncRemote(); FirstRemote.Repository <EntityRelated, IEntityRelated>().Save(related); entity = new EntitySync { UniqueIdentifier = "BB" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); related.RelatedId = entity.Id; Desktop.Repository <EntityRelated, IEntityRelated>().Save(related); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void UpdateInSameTimeOnBothRemoteNotInSameEntity_ShouldBeAllSync() { var entity1 = Desktop.InsertNewEntity <EntitySync, IEntitySync>(); entity1.UniqueIdentifier = "X"; Desktop.Save <EntitySync, IEntitySync>(entity1); var entity2 = Desktop.InsertNewEntity <EntitySync, IEntitySync>(); entity2.UniqueIdentifier = "Y"; Desktop.Save <EntitySync, IEntitySync>(entity2); SyncRemote(); SyncOtherRemote(); AssertAllRepoIsSync(); entity1.StringField = "F1E1"; FirstRemote.Save <EntitySync, IEntitySync>(entity1); entity2.StringField = "F2E2"; SecondRemote.Save <EntitySync, IEntitySync>(entity2); SyncRemote(); AssertFirstRemoteIsSync(); SyncOtherRemote(); AssertSecondRemoteIsSync(); SyncRemote(); AssertAllRepoIsSync(); }
public void SomeChangeOnRemote_ShouldNotBeUploaded() { FirstRemote.InsertNewEntity <DownloadOnlyEntitySync, DownloadOnlyEntitySync>(); SyncRemote(); Assert.AreEqual(0, Desktop.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>().Count()); }
public void Sync_InsertRemote_DoesNotExitInLocal() { FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void SomeChangeOnServer_ShouldNotBeDownloaded() { Desktop.InsertNewEntity <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>(); SyncRemote(); Assert.AreEqual(0, FirstRemote.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>().Count()); }
public void SomeChangeOnRemote_ShouldBeUploaded() { FirstRemote.InsertNewEntity <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>(); SyncRemote(); AssertSyncRepository(Desktop.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>(), FirstRemote.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>()); }
public void InsertOnFirstRemote_DoesNotExitInSecondRemote_ShouldInsertInSecond() { FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); SyncOtherRemote(); AssertSyncRepository(FirstRemote.Repository <EntitySync, IEntitySync>(), SecondRemote.Repository <EntitySync, IEntitySync>()); }
public void Sync_InsertLocal_InsertRemote() { Desktop.InsertNewEntity <EntitySync, IEntitySync>(); FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void Sync_EntityCreatedDeleteOnRemote_UpdateNoGenerateConflict() { var entity = new EntitySync(); FirstRemote.Repository <EntitySync, IEntitySync>().Save(entity); FirstRemote.Repository <EntitySync, IEntitySync>().Delete(entity); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void CreateAndDeleteOnFirstRemoteWithoutSync_NotExitInSecondRemote_ShouldNotExistInSecond() { var entity = FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); FirstRemote.Delete <EntitySync, IEntitySync>(entity); SyncRemote(); SyncOtherRemote(); AssertSyncRepository(FirstRemote.Repository <EntitySync, IEntitySync>(), SecondRemote.Repository <EntitySync, IEntitySync>()); }
public void Sync_DeleteLocal_InsertRemote() { var entity = Desktop.InsertNewEntity <EntitySync, IEntitySync>(); Desktop.Delete <EntitySync, IEntitySync>(entity); FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void Sync_UpdateLocal_NoConflict() { var entity = Desktop.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); entity.StringField += "Updated!"; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void Sync_DeleteLocal_InsertRemote_WithUploadOnlyType() { var entity1 = FirstRemote.InsertNewEntity <UploadOnlyEntitySync, IUploadOnlyEntitySync>(); entity1.UniqueIdentifier = "F1E1"; Desktop.Save <UploadOnlyEntitySync, IUploadOnlyEntitySync>(entity1); Desktop.Delete <UploadOnlyEntitySync, IUploadOnlyEntitySync>(entity1); FirstRemote.Save <UploadOnlyEntitySync, IUploadOnlyEntitySync>(entity1); SyncRemote(); AssertFirstRemoteIsSync(); }
public void DeletedOnFirstRemote_ExitInSecondRemote_ShouldDeleteInSecond() { var entity = FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); SyncRemote(); SyncOtherRemote(); FirstRemote.Delete <EntitySync, IEntitySync>(entity); SyncRemote(); SyncOtherRemote(); AssertSyncRepository(FirstRemote.Repository <EntitySync, IEntitySync>(), SecondRemote.Repository <EntitySync, IEntitySync>()); }
public void OneOnFirst_AfterRightSync_ShouldBeDeletedOnBoth() { var entity = FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); FirstRemote.Save <EntitySync, IEntitySync>(entity); SyncOnBothRemote(); FirstRemote.Delete <EntitySync, IEntitySync>(entity); SyncOnBothRemote(); Assert.AreEqual(1, Desktop.Count <EntityTombstone <EntitySync, IEntitySync> >()); Assert.AreEqual(1, FirstRemote.Count <EntityTombstone <EntitySync, IEntitySync> >()); Assert.AreEqual(0, FirstRemote.Count <EntitySync>()); Assert.AreEqual(1, SecondRemote.Count <EntityTombstone <EntitySync, IEntitySync> >()); Assert.AreEqual(0, SecondRemote.Count <EntitySync>()); }
public void Sync_AfterRententionTimeIsReach_DataOnRemoteShoudBeCleaned() { var entity = new EntitySync(); FirstRemote.Repository <EntitySync, IEntitySync>().Save(entity); SyncRemote(); Assert.AreEqual(1, Desktop.Repository <EntitySync, IEntitySync>().Count()); Assert.AreEqual(1, FirstRemote.Repository <EntitySync, IEntitySync>().Count()); SomeDayLater(EntitySync.RentionTimeClient); SyncRemote(); Assert.AreEqual(1, Desktop.Repository <EntitySync, IEntitySync>().Count()); Assert.AreEqual(0, FirstRemote.Repository <EntitySync, IEntitySync>().Count()); }
public void CreateOneOnFirstAndOneOnSecond_AfterRightSync_BothShouldBeExistOnTwoRemote() { var entity = FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); entity.UniqueIdentifier = "X"; FirstRemote.Save <EntitySync, IEntitySync>(entity); SyncManager.SomeTimeLater(); var entity2 = SecondRemote.InsertNewEntity <EntitySync, IEntitySync>(); entity2.UniqueIdentifier = "Y"; SecondRemote.Save <EntitySync, IEntitySync>(entity2); SyncOnBothRemote(); Assert.AreEqual(2, FirstRemote.Count <EntitySync>()); Assert.AreEqual(2, SecondRemote.Count <EntitySync>()); AssertSyncRepository(FirstRemote.Repository <EntitySync, IEntitySync>(), SecondRemote.Repository <EntitySync, IEntitySync>()); }
public void EntityCreatedBeforeLastSyncAndUpdatedBeforeSync() { var entity1 = FirstRemote.InsertNewEntity <EntitySync, IEntitySync>(); entity1.UniqueIdentifier = "F1E1"; FirstRemote.Save <EntitySync, IEntitySync>(entity1); var entity2 = SecondRemote.InsertNewEntity <EntitySync, IEntitySync>(); entity2.UniqueIdentifier = "F2E2"; SecondRemote.Save <EntitySync, IEntitySync>(entity2); SyncRemote(); SyncOtherRemote(); entity2 = entity2.GetOnSpecifiedDatastore(Desktop.DataStore); entity2.StringField = "Updated !"; Desktop.Save <EntitySync, IEntitySync>(entity2); SyncRemote(); AssertFirstRemoteIsSync(); }
public void Sync_EntityReferencesInFKDeletedInLocal_IsDeleteOnRemote() { var entity = new EntitySync { UniqueIdentifier = "AA" }; Desktop.Repository <EntitySync, IEntitySync>().Save(entity); var related = new EntityRelated { RelatedId = entity.Id }; Desktop.Repository <EntityRelated, IEntityRelated>().Save(related); SyncRemote(); related.RelatedId = null; Desktop.Repository <EntityRelated, IEntityRelated>().Save(related); Desktop.Repository <EntitySync, IEntitySync>().Delete(entity); SyncRemote(); Assert.AreEqual(Desktop.Repository <EntitySync, IEntitySync>().Count(), 0); AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>()); }
public void EntityCreatedBeforeUsingSyncFrameworkHasNoCreatedAtValue() { var entity = new EntityRelated(); Desktop.DataStore.Insert(entity); FirstRemote.DataStore.Insert(entity); AssertSyncRepository(Desktop.Repository <EntityRelated, IEntityRelated>(), FirstRemote.Repository <EntityRelated, IEntityRelated>()); entity.IntField = 2; Desktop.Save <EntityRelated, IEntityRelated>(entity); SyncRemote(); AssertSyncRepository(Desktop.Repository <EntityRelated, IEntityRelated>(), FirstRemote.Repository <EntityRelated, IEntityRelated>()); }
public void SomeChangeOnServer_ShouldBeDownloaded() { Desktop.InsertNewEntity <DownloadOnlyEntitySync, DownloadOnlyEntitySync>(); SyncRemote(); AssertSyncRepository(Desktop.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>(), FirstRemote.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>()); }