Exemplo n.º 1
0
        public void ShouldCreateResourceInTarget()
        {
            using (var channel = new SynchronizationChannel <TestResource>(_testSource, _testTarget))
            {
                channel.Open();
                _testResource = new TestResource(1);
                _testSource.Create(_testResource);

                Assert.AreEqual(_testResource, _testTarget.Get(1));
            }
        }
Exemplo n.º 2
0
        public void ShouldCreateResourceInTarget()
        {
            using (var channel = new SynchronizationChannel<TestResource>(_testSource, _testTarget))
            {
                channel.Open();
                _testResource = new TestResource(1);
                _testSource.Create(_testResource);

                Assert.AreEqual(_testResource, _testTarget.Get(1));
            }
        }
Exemplo n.º 3
0
        public void ShouldAddItemToTarget()
        {
            var testSource = new InMemoryDataEndpoint<TestResource>(r => r.Id);
            var testTarget = new InMemoryDataEndpoint<TestResource>(r => r.Id);
            var testResource = new TestResource(1) { Description = "Test" };
            testSource.Create(testResource);
            testTarget.AddSyncAction((e,r) => e.Get(e.IdentityResolver(r)) == null, (e, r) => e.Create(r), "Create");
            var testChannel = new SynchronizationChannel<TestResource>(testSource, testTarget, true);
            
            testChannel.Open();

            Assert.IsNotNull(testTarget.Get(1));
        }
Exemplo n.º 4
0
        public void ShouldDeleteResourceInTargetWhenDeletedAtTarget()
        {
            using (var channel = new SynchronizationChannel <TestResource>(_testSource, _testTarget))
            {
                // Arrange
                _testResource = new TestResource(1);
                channel.Open();
                _testSource.Create(_testResource);

                // Act
                _testSource.Delete(_testResource);

                // Assert
                Assert.IsNull(_testTarget.Get(1));
            }
        }
Exemplo n.º 5
0
        public void ShouldDeleteResourceInTargetWhenDeletedAtTarget()
        {
            using (var channel = new SynchronizationChannel<TestResource>(_testSource, _testTarget))
            {
                // Arrange
                _testResource = new TestResource(1);
                channel.Open();
                _testSource.Create(_testResource);
                
                // Act
                _testSource.Delete(_testResource);

                // Assert
                Assert.IsNull(_testTarget.Get(1));
            }
        }
Exemplo n.º 6
0
        public void ShouldAddItemToTarget()
        {
            var testSource   = new InMemoryDataEndpoint <TestResource>(r => r.Id);
            var testTarget   = new InMemoryDataEndpoint <TestResource>(r => r.Id);
            var testResource = new TestResource(1)
            {
                Description = "Test"
            };

            testSource.Create(testResource);
            testTarget.AddSyncAction((e, r) => e.Get(e.IdentityResolver(r)) == null, (e, r) => e.Create(r), "Create");
            var testChannel = new SynchronizationChannel <TestResource>(testSource, testTarget, true);

            testChannel.Open();

            Assert.IsNotNull(testTarget.Get(1));
        }
Exemplo n.º 7
0
        public void ShouldDeleteItemFromTarget()
        {
            var testSource = new InMemoryDataEndpoint<TestResource>(r => r.Id);
            var testTarget = new BatchListCleanupEndpointDecorator<TestResource>(
                new InMemoryDataEndpoint<TestResource>(r => r.Id));
            var testResource = new TestResource(1) { Description = "Test" };
            testTarget.Create(testResource);
            testTarget.AddSyncAction((e, r) => e.Get(e.IdentityResolver(r)) == null, (e, r) => e.Create(r), "Create");
            var testChannel = new SynchronizationChannel<TestResource>(testSource, testTarget, true);
            testChannel.Opening += (s, e) => testTarget.Initialize();
            testChannel.Closing += (s, e) => testTarget.Finish();

            testChannel.Open();

            Assert.IsNull(testTarget.Get(1));
            Assert.IsFalse(testChannel.IsOpen);
        }
Exemplo n.º 8
0
        public void ShouldUpdateResourceInTargetWhenUpdatedLocal()
        {
            using (var channel = new SynchronizationChannel<TestResource>(_testSource, _testTarget))
            {
                // Arrange
                _testResource = new TestResource(1) { CorrelationId = "1030" };
                _testTarget.Create(_testResource);
                var changedResource = _testResource.Copy();
                 changedResource.Description = "Changed";

                // Act
                channel.Open();
                _testSource.Create(changedResource);

                // Assert
                var actualtTestResource = _testTarget.Get(1);
                Assert.AreEqual(_testResource, actualtTestResource);
                Assert.AreEqual("Changed", actualtTestResource.Description);
            }
        }
Exemplo n.º 9
0
        public void ShouldDeleteItemFromTarget()
        {
            var testSource = new InMemoryDataEndpoint <TestResource>(r => r.Id);
            var testTarget = new BatchListCleanupEndpointDecorator <TestResource>(
                new InMemoryDataEndpoint <TestResource>(r => r.Id));
            var testResource = new TestResource(1)
            {
                Description = "Test"
            };

            testTarget.Create(testResource);
            testTarget.AddSyncAction((e, r) => e.Get(e.IdentityResolver(r)) == null, (e, r) => e.Create(r), "Create");
            var testChannel = new SynchronizationChannel <TestResource>(testSource, testTarget, true);

            testChannel.Opening += (s, e) => testTarget.Initialize();
            testChannel.Closing += (s, e) => testTarget.Finish();

            testChannel.Open();

            Assert.IsNull(testTarget.Get(1));
            Assert.IsFalse(testChannel.IsOpen);
        }
Exemplo n.º 10
0
        public void SetUpTest()
        {
            _testSource = new InMemoryDataEndpoint <TestResource>(t => t.Id);
            _testSource.ResourceDeleted.Subscribe(t => t.Deleted = true);
            _testTarget = new InMemoryDataEndpoint <TestResource>(t => t.Id);
            _testTarget.AddSyncAction(t => t.Deleted, (ds, t) => ds.Delete(t), "Delete");
            _testTarget.AddSyncAction(t => string.IsNullOrEmpty(t.CorrelationId),
                                      (ds, r) => ds.Create(r), "Create");

            _testTarget.AddSyncAction(
                t => !string.IsNullOrEmpty(t.CorrelationId), (ds, r) =>
            {
                var resourceToUpdate = ds.Get(r.Id);
                if (resourceToUpdate != null)
                {
                    resourceToUpdate.Update(r);
                    ds.Update(resourceToUpdate);
                }
            }, "Update");

            _testChannel = new SynchronizationChannel <TestResource>(_testSource, _testTarget);
        }
Exemplo n.º 11
0
        public void ShouldNotBreakPublishing()
        {
            _testTarget = new InMemoryDataEndpoint <TestResource>(t => t.Id);
            _testTarget.AddSyncAction(t => t.Deleted, (ds, t) =>
            {
                throw new Exception("Ooops");
            }, "Delete");
            _testTarget.AddSyncAction(t => string.IsNullOrEmpty(t.CorrelationId),
                                      (ds, r) => ds.Create(r), "Create");
            using (var channel = new SynchronizationChannel <TestResource>(_testSource, _testTarget))
            {
                channel.Open();

                _testResource = new TestResource(1);
                _testSource.Create(_testResource);
                _testSource.Delete(_testResource);
                var testResource2 = new TestResource(2);
                _testSource.Create(testResource2);

                Assert.AreEqual(testResource2, _testTarget.Get(2));
            }
        }
Exemplo n.º 12
0
        public void SetUpTest()
        {
            _testSource = new InMemoryDataEndpoint<TestResource>(t => t.Id);
            _testSource.ResourceDeleted.Subscribe(t => t.Deleted = true);
            _testTarget = new InMemoryDataEndpoint<TestResource>(t => t.Id);
            _testTarget.AddSyncAction(t => t.Deleted, (ds, t) => ds.Delete(t), "Delete");
            _testTarget.AddSyncAction(t => string.IsNullOrEmpty(t.CorrelationId), 
                (ds, r) => ds.Create(r), "Create");
            
            _testTarget.AddSyncAction(
                t => !string.IsNullOrEmpty(t.CorrelationId), (ds, r) =>
                {
                    var resourceToUpdate = ds.Get(r.Id);
                    if (resourceToUpdate != null)
                    {
                        resourceToUpdate.Update(r);
                        ds.Update(resourceToUpdate);
                    }
                }, "Update");

            _testChannel = new SynchronizationChannel<TestResource>(_testSource, _testTarget);
        }
Exemplo n.º 13
0
        public void ShouldUpdateResourceInTargetWhenUpdatedLocal()
        {
            using (var channel = new SynchronizationChannel <TestResource>(_testSource, _testTarget))
            {
                // Arrange
                _testResource = new TestResource(1)
                {
                    CorrelationId = "1030"
                };
                _testTarget.Create(_testResource);
                var changedResource = _testResource.Copy();
                changedResource.Description = "Changed";

                // Act
                channel.Open();
                _testSource.Create(changedResource);

                // Assert
                var actualtTestResource = _testTarget.Get(1);
                Assert.AreEqual(_testResource, actualtTestResource);
                Assert.AreEqual("Changed", actualtTestResource.Description);
            }
        }
Exemplo n.º 14
0
        public void ShouldNotBreakPublishing()
        {
            _testTarget = new InMemoryDataEndpoint<TestResource>(t => t.Id);
            _testTarget.AddSyncAction(t => t.Deleted, (ds, t) =>
            {
                throw new Exception("Ooops");
            }, "Delete");
            _testTarget.AddSyncAction(t => string.IsNullOrEmpty(t.CorrelationId),
                (ds, r) => ds.Create(r), "Create");
            using (var channel = new SynchronizationChannel<TestResource>(_testSource, _testTarget))
            {
                channel.Open();

                _testResource = new TestResource(1);
                _testSource.Create(_testResource);
                _testSource.Delete(_testResource);
                var testResource2 = new TestResource(2);
                _testSource.Create(testResource2);

                Assert.AreEqual(testResource2, _testTarget.Get(2));
            }
        }