public void ShouldAddItemWhenNotInCollection()
        {
            var addedItem = new LocalTestResource(1, 10) { Name = "TestResource" };
            _dataSource.Create(addedItem);

            Assert.IsTrue(_observableUnderTest.Contains(addedItem));
        }
Пример #2
0
        public void ShouldReturnCompleteMatchesFirstDueToMatching()
        {
            var incompleteMatch = new ItemMatch <LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "complete"));
            var completeMatch = new ItemMatch <LocalTestResource, RemoteTestResource>(
                new LocalTestResource(2, 10),
                new RemoteTestResource(2, "complete"));

            var matches = new List <ItemMatch <LocalTestResource, RemoteTestResource> >
            {
                incompleteMatch,
                completeMatch
            };

            var localTestResource = new LocalTestResource(1, 10);

            _channelConfig.Type1EndpointConfiguration.Endpoint.Create(localTestResource);
            var resultMatches = matches.BatchCompleteItems(_channelConfig, TargetType.T1).ToList();

            Assert.AreEqual(2, resultMatches.Count);
            Assert.AreEqual(completeMatch, resultMatches[0]);
            Assert.AreEqual(incompleteMatch.Result2, resultMatches[1].Result2);
            Assert.AreEqual(localTestResource, resultMatches[1].Result1);
        }
Пример #3
0
        public void ShouldDispatchWhenUpdated()
        {
            var localTestResource = new LocalTestResource(1);

            _dataSource.Create(localTestResource);
            _hasDispatched = false;
            _dataSource.Update(localTestResource);
            Assert.IsTrue(_hasDispatched);
        }
        public void ShouldDeleteItem()
        {
            var addedItem = new LocalTestResource(1, 10) { Name = "TestResource" };
            _dataSource.Create(addedItem);
            _dataSource.Delete(addedItem);

            Assert.IsFalse(_observableUnderTest.Contains(addedItem));
            Assert.AreEqual(0, _observableUnderTest.Count);
        }
        public void ShouldReturnNullSynchActionWhenUnresolved()
        {
            _shouldResolve = false;
            var localTestResource = new LocalTestResource(1);
            var action = _resolutionStepUnderTest.Resolve(localTestResource);

            Assert.IsNotNull(action);
            Assert.AreEqual(typeof(NullSynchAction<LocalTestResource>), action.GetType());
        }
        public void ShouldDispatchWhenDeleting()
        {
            var addedItem = new LocalTestResource(1, 10) { Name = "TestResource" };
            _dataSource.Create(addedItem);
            _hasDispatched = false;
            _dataSource.Delete(addedItem);

            Assert.IsTrue(_hasDispatched);
        }
Пример #7
0
        public void ShouldReturnNullSynchActionWhenUnresolved()
        {
            _shouldResolve = false;
            var localTestResource = new LocalTestResource(1);
            var action            = _resolutionStepUnderTest.Resolve(localTestResource);

            Assert.IsNotNull(action);
            Assert.AreEqual(typeof(NullSynchAction <LocalTestResource>), action.GetType());
        }
Пример #8
0
        public void ShouldReturnActionWhenApplicable()
        {
            _shouldResolve = true;
            var localTestResource = new LocalTestResource(1);
            var action            = _resolutionStepUnderTest.Resolve(localTestResource);

            Assert.IsNotNull(action);
            action.Execute();
            Assert.IsTrue(_isResolved);
        }
        public void ShouldReturnActionWhenApplicable()
        {
            _shouldResolve = true;
            var localTestResource = new LocalTestResource(1);
            var action = _resolutionStepUnderTest.Resolve(localTestResource);

            Assert.IsNotNull(action);
            action.Execute();
            Assert.IsTrue(_isResolved);
        }
Пример #10
0
        public void ShouldAddItemWhenNotInCollection()
        {
            var addedItem = new LocalTestResource(1, 10)
            {
                Name = "TestResource"
            };

            _dataSource.Create(addedItem);

            Assert.IsTrue(_observableUnderTest.Contains(addedItem));
        }
        public void ShouldAddEqualItemAfterOtherWhenAscending()
        {
            _observableUnderTest.OrderBy(ltr => ltr.Name).Asc();

            _dateSource.Create(_smallest);
            _dateSource.Create(_bigger);
            _dateSource.Create(_biggest);

            var biggest2 = new LocalTestResource(200) { Name = "Zack" };
            _dateSource.Create(biggest2);

            Assert.AreEqual(biggest2, _observableUnderTest[3]);
        }
        public void ShouldAppendT1WhenDefaultButAvailable()
        {
            var itemMatch = new ItemMatch<LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "test"));
            var item1 = new LocalTestResource(1, 10);
            _channelConfig.Type1EndpointConfiguration.Endpoint.Create(item1);

            var result = _itemMatcherUnderTest.AppendIndividualItem(itemMatch);

            Assert.AreEqual(item1, result.Result1);
            Assert.AreEqual(itemMatch.Result2, result.Result2);
        }
Пример #13
0
        public void ShouldDispatchWhenDeleting()
        {
            var addedItem = new LocalTestResource(1, 10)
            {
                Name = "TestResource"
            };

            _dataSource.Create(addedItem);
            _hasDispatched = false;
            _dataSource.Delete(addedItem);

            Assert.IsTrue(_hasDispatched);
        }
Пример #14
0
        public void ShouldDeleteItem()
        {
            var addedItem = new LocalTestResource(1, 10)
            {
                Name = "TestResource"
            };

            _dataSource.Create(addedItem);
            _dataSource.Delete(addedItem);

            Assert.IsFalse(_observableUnderTest.Contains(addedItem));
            Assert.AreEqual(0, _observableUnderTest.Count);
        }
        public void ShouldAddUpdatedItemIfNotInTheList()
        {
            _dataSource = new InMemoryCrudDataEndpoint<LocalTestResource, int>(
                new TypeConfiguration<LocalTestResource, int>(
                    ltr => ltr.CorrelationId.HasValue ? ltr.CorrelationId.Value : -1, -1));
            var addedItem = new LocalTestResource(1, 10) { Name = "TestResource" };
            _dataSource.Create(addedItem);
            ConstrucTestSubject();

            _dataSource.Update(addedItem);

            Assert.IsTrue(_observableUnderTest.Contains(addedItem));
        }
        public void SetUpTest()
        {
            _dateSource = new InMemoryCrudDataEndpoint<LocalTestResource, int>(
                new TypeConfiguration<LocalTestResource, int>(ltr => ltr.LocalId,
                0));
            _observableUnderTest = new AttachedObservableCollection<LocalTestResource>(
                _dateSource
                , new LocalTestResourceIdComparer());

            _smallest = new LocalTestResource(10) { Name = "Anthony" };
            _bigger = new LocalTestResource(1) { Name = "Bert" };
            _biggest = new LocalTestResource(2) { Name = "Zack" };
        }
        public void ShouldTryMatchFromGivenSourceType1()
        {
            // Add resource that should be retrieved by matcher
            var localTestResource = new LocalTestResource(1, 10);
            _channelConfiguration.Type1EndpointConfiguration.Endpoint.Create(localTestResource);

            var testMatch = new ItemMatch<LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "Missing"));
            var resultMatch = _matcherUnderTest.Complete(testMatch);

            Assert.IsNotNull(resultMatch.Result1);
            Assert.AreEqual(localTestResource, resultMatch.Result1);
        }
Пример #18
0
        public void ShouldAppendT1WhenDefaultButAvailable()
        {
            var itemMatch = new ItemMatch <LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "test"));
            var item1 = new LocalTestResource(1, 10);

            _channelConfig.Type1EndpointConfiguration.Endpoint.Create(item1);

            var result = _itemMatcherUnderTest.AppendIndividualItem(itemMatch);

            Assert.AreEqual(item1, result.Result1);
            Assert.AreEqual(itemMatch.Result2, result.Result2);
        }
Пример #19
0
        public void ShouldTryMatchFromGivenSourceType1()
        {
            // Add resource that should be retrieved by matcher
            var localTestResource = new LocalTestResource(1, 10);

            _channelConfiguration.Type1EndpointConfiguration.Endpoint.Create(localTestResource);

            var testMatch = new ItemMatch <LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "Missing"));
            var resultMatch = _matcherUnderTest.Complete(testMatch);

            Assert.IsNotNull(resultMatch.Result1);
            Assert.AreEqual(localTestResource, resultMatch.Result1);
        }
Пример #20
0
        public void ShouldAddUpdatedItemIfNotInTheList()
        {
            _dataSource = new InMemoryCrudDataEndpoint <LocalTestResource, int>(
                new TypeConfiguration <LocalTestResource, int>(
                    ltr => ltr.CorrelationId.HasValue ? ltr.CorrelationId.Value : -1, -1));
            var addedItem = new LocalTestResource(1, 10)
            {
                Name = "TestResource"
            };

            _dataSource.Create(addedItem);
            ConstrucTestSubject();

            _dataSource.Update(addedItem);

            Assert.IsTrue(_observableUnderTest.Contains(addedItem));
        }
        public void ShouldAddEqualItemBeforeOtherWhenDesc()
        {
            _observableUnderTest.OrderBy(ltr => ltr.Name).Desc();

            _dateSource.Create(_smallest);
            _dateSource.Create(_bigger);
            _dateSource.Create(_biggest);

            var biggest2 = new LocalTestResource(200)
            {
                Name = "Zack"
            };

            _dateSource.Create(biggest2);

            Assert.AreEqual(biggest2, _observableUnderTest[0]);
        }
        public void ShouldReplaceItemOnNewLocationWhenDifferentInstances()
        {
            _observableUnderTest.OrderBy(ltr => ltr.Name).Asc();

            _dateSource.Create(_smallest);
            _dateSource.Create(_bigger);
            _dateSource.Create(_biggest);

            var newBiggest = new LocalTestResource(2)
            {
                Name = "Aaron"
            };

            _dateSource.Update(newBiggest);

            Assert.IsFalse(_observableUnderTest.Contains(_biggest));
            Assert.AreEqual(newBiggest, _observableUnderTest[0]);
        }
Пример #23
0
        public void ShouldSwapInstanceWhenUpdated()
        {
            var addedItem = new LocalTestResource(1, 10)
            {
                Name = "TestResource"
            };

            _dataSource.Create(addedItem);
            var updatedItem = new LocalTestResource(1, 10)
            {
                Name = "Updated TestResource"
            };

            _dataSource.Update(updatedItem);

            Assert.IsFalse(_observableUnderTest.Contains(addedItem));
            Assert.IsTrue(_observableUnderTest.Contains(updatedItem));
            Assert.AreEqual(1, _observableUnderTest.Count);
        }
        public void SetUpTest()
        {
            _dateSource = new InMemoryCrudDataEndpoint <LocalTestResource, int>(
                new TypeConfiguration <LocalTestResource, int>(ltr => ltr.LocalId,
                                                               0));
            _observableUnderTest = new AttachedObservableCollection <LocalTestResource>(
                _dateSource
                , new LocalTestResourceIdComparer());

            _smallest = new LocalTestResource(10)
            {
                Name = "Anthony"
            };
            _bigger = new LocalTestResource(1)
            {
                Name = "Bert"
            };
            _biggest = new LocalTestResource(2)
            {
                Name = "Zack"
            };
        }
Пример #25
0
        public void ShouldWrapExceptionIntoChangeResolutionException()
        {
            var exception = new Exception("Whatever resolution error");

            _testSynchronizationResolver = new SynchronizationResolver <LocalTestResource, string>(
                "bogus config",
                (item, cfg) =>
            {
                throw exception;
            },
                (item, cfg) =>
            {
                _isResolved = true;
                return(new SynchronizationResult(true));
            });

            var changeResolvers = new List <ISynchronizationResolver <LocalTestResource> >
            {
                _testSynchronizationResolver
            };

            _resolutionStepUnderTest = new ChangeResolutionStepOld <LocalTestResource, string>(
                changeResolvers, "bogus config");

            var localTestResource = new LocalTestResource(1);

            try
            {
                _resolutionStepUnderTest.Resolve(localTestResource);
                Assert.Fail("Expecting ChangeResolutionException");
            }
            catch (ChangeResolutionException ex)
            {
                Assert.AreEqual(string.Format("Failed to resolve change for {0}", ex.Item), ex.Message);
                Assert.AreEqual(exception, ex.InnerException);
                Assert.AreEqual(localTestResource, ex.Item);
            }
        }
Пример #26
0
        public void ShouldBuildPipelineWithObservers()
        {
            _shouldResolve = true;
            LocalTestResource isCalled = null;

            _resolutionStepUnderTest.AddResultObserver(action =>
            {
                isCalled = action.Applicant;
            });

            var compositionSource = new List <LocalTestResource>
            {
                new LocalTestResource(1)
            };
            var pipeline = _resolutionStepUnderTest.Compose(compositionSource);

            foreach (var synchronizationAction in pipeline)
            {
                Debug.WriteLine(synchronizationAction.Applicant);
            }

            Assert.AreEqual(compositionSource[0], isCalled);
        }
Пример #27
0
        public void ShouldReturnCompleteMatchesFirstDueToMatching()
        {
            var incompleteMatch = new ItemMatch<LocalTestResource, RemoteTestResource>(
                null,
                new RemoteTestResource(1, "complete"));
            var completeMatch = new ItemMatch<LocalTestResource, RemoteTestResource>(
                new LocalTestResource(2, 10),
                new RemoteTestResource(2, "complete"));

            var matches = new List<ItemMatch<LocalTestResource, RemoteTestResource>>
            {
                incompleteMatch,
                completeMatch
            };

            var localTestResource = new LocalTestResource(1, 10);
            _channelConfig.Type1EndpointConfiguration.Endpoint.Create(localTestResource);
            var resultMatches = matches.BatchCompleteItems(_channelConfig, TargetType.T1).ToList();

            Assert.AreEqual(2, resultMatches.Count);
            Assert.AreEqual(completeMatch, resultMatches[0]);
            Assert.AreEqual(incompleteMatch.Result2, resultMatches[1].Result2);
            Assert.AreEqual(localTestResource, resultMatches[1].Result1);
        }
        public void ShouldSwapInstanceWhenUpdated()
        {
            var addedItem = new LocalTestResource(1, 10) { Name = "TestResource" };
            _dataSource.Create(addedItem);
            var updatedItem = new LocalTestResource(1, 10) { Name = "Updated TestResource" };
            _dataSource.Update(updatedItem);

            Assert.IsFalse(_observableUnderTest.Contains(addedItem));
            Assert.IsTrue(_observableUnderTest.Contains(updatedItem));
            Assert.AreEqual(1, _observableUnderTest.Count);
        }
 public void ShouldDispatchWhenUpdated()
 {
     var localTestResource = new LocalTestResource(1);
     _dataSource.Create(localTestResource);
     _hasDispatched = false;
     _dataSource.Update(localTestResource);
     Assert.IsTrue(_hasDispatched);
 }
        public void ShouldWrapExceptionIntoChangeResolutionException()
        {
            var exception = new Exception("Whatever resolution error");
            _testSynchronizationResolver = new SynchronizationResolver<LocalTestResource, string>(
                "bogus config",
                (item, cfg) =>
                {
                    throw exception;
                },
                (item, cfg) =>
                {
                    _isResolved = true;
                    return new SynchronizationResult(true);
                });

            var changeResolvers = new List<ISynchronizationResolver<LocalTestResource>>
            {
                _testSynchronizationResolver
            };

            _resolutionStepUnderTest = new ChangeResolutionStepOld<LocalTestResource, string>(
                changeResolvers, "bogus config");

            var localTestResource = new LocalTestResource(1);
            try
            {
                _resolutionStepUnderTest.Resolve(localTestResource);
                Assert.Fail("Expecting ChangeResolutionException");
            }
            catch (ChangeResolutionException ex)
            {
                Assert.AreEqual(string.Format("Failed to resolve change for {0}", ex.Item), ex.Message);
                Assert.AreEqual(exception, ex.InnerException);
                Assert.AreEqual(localTestResource, ex.Item);
            }
        }
        public void ShouldReplaceItemOnNewLocationWhenDifferentInstances()
        {
            _observableUnderTest.OrderBy(ltr => ltr.Name).Asc();

            _dateSource.Create(_smallest);
            _dateSource.Create(_bigger);
            _dateSource.Create(_biggest);

            var newBiggest = new LocalTestResource(2) { Name = "Aaron" };
            _dateSource.Update(newBiggest);

            Assert.IsFalse(_observableUnderTest.Contains(_biggest));
            Assert.AreEqual(newBiggest, _observableUnderTest[0]);
        }