public void FulfillSyncRequest_ValidRequest_SyncResultBuildCalled()
        {
            var syncResult = Mocking.MockAndBind <ISyncResult <TestItem, Guid> >(_container);

            var replica     = new Replica("test");
            var syncRequest = Mock.Create <ISyncRequest <Guid> >();

            var target = new ReceivingSynchronizer <TestItem, Guid>(_container);

            var result = target.FulfillSyncRequest(syncRequest);

            Mock.Assert(() => syncResult.Build(syncRequest), Occurs.Once());
        }
        public void ReceiveChangedItemsAsRemoteReplica_ChangeToExistingRecord_ChangeIsUpdated()
        {
            var testItem   = new TestItem();
            var repository = Mocking.MockAndBind <IRepository <TestItem, Guid> >(_container);

            Mock.Arrange(() => repository.Find(testItem.Id)).Returns(testItem);
            var changes = new List <TestItem> {
                testItem
            };
            var target = new ReceivingSynchronizer <TestItem, Guid>(_container);

            target.ReceiveChangedItemsAsRemoteReplica(changes);

            Mock.Assert(() => repository.Update(testItem), Occurs.Once());
        }
        public void ReceiveChangedItemsAsRemoteReplica_ChangesExist_ChangesAreSaved()
        {
            var      testItem     = new TestItem();
            TestItem nullTestItem = null;
            var      repository   = Mocking.MockAndBind <IRepository <TestItem, Guid> >(_container);

            // ReSharper disable once ExpressionIsAlwaysNull
            Mock.Arrange(() => repository.Find(testItem.Id)).Returns(nullTestItem);
            var changes = new List <TestItem> {
                testItem
            };
            var target = new ReceivingSynchronizer <TestItem, Guid>(_container);

            target.ReceiveChangedItemsAsRemoteReplica(changes);

            Mock.Assert(() => repository.Insert(testItem), Occurs.Once());
        }
 public TestSyncRequestSender(ReceivingSynchronizer <TItem, TId> receiver)
 {
     _receiver = receiver;
 }