コード例 #1
0
        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>());
        }
コード例 #2
0
        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>());
        }
コード例 #3
0
        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>());
        }
コード例 #4
0
        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>());
        }
コード例 #5
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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();
        }
コード例 #6
0
        public void SomeChangeOnRemote_ShouldNotBeUploaded()
        {
            FirstRemote.InsertNewEntity <DownloadOnlyEntitySync, DownloadOnlyEntitySync>();

            SyncRemote();

            Assert.AreEqual(0, Desktop.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>().Count());
        }
コード例 #7
0
        public void Sync_InsertRemote_DoesNotExitInLocal()
        {
            FirstRemote.InsertNewEntity <EntitySync, IEntitySync>();

            SyncRemote();

            AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>());
        }
コード例 #8
0
        public void SomeChangeOnServer_ShouldNotBeDownloaded()
        {
            Desktop.InsertNewEntity <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>();

            SyncRemote();

            Assert.AreEqual(0, FirstRemote.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>().Count());
        }
コード例 #9
0
        public void SomeChangeOnRemote_ShouldBeUploaded()
        {
            FirstRemote.InsertNewEntity <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>();

            SyncRemote();

            AssertSyncRepository(Desktop.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>(), FirstRemote.Repository <UpdloadOnlyEntitySync, UpdloadOnlyEntitySync>());
        }
コード例 #10
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        public void InsertOnFirstRemote_DoesNotExitInSecondRemote_ShouldInsertInSecond()
        {
            FirstRemote.InsertNewEntity <EntitySync, IEntitySync>();

            SyncRemote();
            SyncOtherRemote();

            AssertSyncRepository(FirstRemote.Repository <EntitySync, IEntitySync>(), SecondRemote.Repository <EntitySync, IEntitySync>());
        }
コード例 #11
0
        public void Sync_InsertLocal_InsertRemote()
        {
            Desktop.InsertNewEntity <EntitySync, IEntitySync>();

            FirstRemote.InsertNewEntity <EntitySync, IEntitySync>();

            SyncRemote();

            AssertSyncRepository(Desktop.Repository <EntitySync, IEntitySync>(), FirstRemote.Repository <EntitySync, IEntitySync>());
        }
コード例 #12
0
        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>());
        }
コード例 #13
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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>());
        }
コード例 #14
0
        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>());
        }
コード例 #15
0
        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>());
        }
コード例 #16
0
        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();
        }
コード例 #17
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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>());
        }
コード例 #18
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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>());
        }
コード例 #19
0
        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());
        }
コード例 #20
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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>());
        }
コード例 #21
0
ファイル: SyncTwoRemoteTest.cs プロジェクト: sGeeK44/OpenNet
        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();
        }
コード例 #22
0
        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>());
        }
コード例 #23
0
        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>());
        }
コード例 #24
0
        public void SomeChangeOnServer_ShouldBeDownloaded()
        {
            Desktop.InsertNewEntity <DownloadOnlyEntitySync, DownloadOnlyEntitySync>();

            SyncRemote();

            AssertSyncRepository(Desktop.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>(), FirstRemote.Repository <DownloadOnlyEntitySync, DownloadOnlyEntitySync>());
        }