public void GetAllChildrenWithZipCodesReturnsSingleChildWithMatchingZipCode()
        {
            const int expectedNumberOfChildTerritories = 1;
            const int matchingZipId     = 382;
            const int parentTerritoryId = 22;
            Territory expectedChild     = new FakeTerritory(400)
            {
                ZipCodes = new List <ZipCode> {
                    new ZipCode(matchingZipId)
                }
            };

            Expect.Call(_territoryRepository.GetChildTerritories(parentTerritoryId)).Return(new List <Territory> {
                expectedChild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(expectedChild.Id)).Return(new List <Territory>());

            _mocks.ReplayAll();
            var childTerritories = _territoryZipCodeUpdater.GetAllChildrenWithZipCodes(
                new List <ZipCode> {
                new ZipCode(matchingZipId)
            }, parentTerritoryId);

            _mocks.VerifyAll();

            Assert.AreEqual(expectedNumberOfChildTerritories, childTerritories.Count(), "Only one child territory should have been returned.");
            Assert.AreEqual(expectedChild, childTerritories.Single(), "The wrong child territory was returned.");
        }
        public void GetAllChildrenWithZipCodesReturnsChildAndGrandchildWithMatchingZip()
        {
            const int expectedNumberOfChildTerritories = 2;
            const int parentTerritoryId = 9;
            var       zipCodes          = new List <ZipCode> {
                new ZipCode(44444)
            };
            Territory expectedChild = new FakeTerritory(8)
            {
                ZipCodes = zipCodes
            };
            Territory expectedGrandchild = new FakeTerritory(7)
            {
                ZipCodes = zipCodes
            };

            Expect.Call(_territoryRepository.GetChildTerritories(parentTerritoryId)).Return(new List <Territory> {
                expectedChild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(expectedChild.Id)).Return(new List <Territory> {
                expectedGrandchild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(expectedGrandchild.Id)).Return(new List <Territory>());

            _mocks.ReplayAll();
            var childTerritories = _territoryZipCodeUpdater.GetAllChildrenWithZipCodes(zipCodes, parentTerritoryId);

            _mocks.VerifyAll();

            Assert.AreEqual(expectedNumberOfChildTerritories, childTerritories.Count(), "Returned list did not contain the expected number of children.");
            Assert.Contains(expectedChild, childTerritories.ToList(), "Returned list did not contain expected child territory.");
            Assert.Contains(expectedGrandchild, childTerritories.ToList(), "Returned list did not contain expected grandchild territory.");
        }
        public void GetAllChildrenWithZipCodesReturnsOneChildWhenTwoChildrenShareMatchingZip()
        {
            const int expectedNumberOfChildTerritories = 1;
            const int parentTerritoryId   = 22;
            var       listWithMatchingZip = new List <ZipCode> {
                new ZipCode(382)
            };
            Territory expectedChild = new FakeTerritory(400)
            {
                ZipCodes = listWithMatchingZip
            };
            Territory otherChild = new FakeTerritory(expectedChild.Id + 1)
            {
                ZipCodes = listWithMatchingZip
            };

            Expect.Call(_territoryRepository.GetChildTerritories(parentTerritoryId)).Return(new List <Territory> {
                expectedChild, otherChild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(expectedChild.Id)).Return(new List <Territory>());

            _mocks.ReplayAll();
            var childTerritories = _territoryZipCodeUpdater.GetAllChildrenWithZipCodes(listWithMatchingZip, parentTerritoryId);

            _mocks.VerifyAll();

            Assert.AreEqual(expectedNumberOfChildTerritories, childTerritories.Count(), "Only one child territory should have been returned.");
        }
        public void MapSetsGivenTerritoryIdToEntityTerritoryId()
        {
            const long expectedTerritoryId = 3;
            var        fakeTerritory       = new FakeTerritory(expectedTerritoryId);

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.AreEqual(expectedTerritoryId, territoryEntity.TerritoryId,
                            "Territory ID was not mapped to entity correctly.");
        }
        public void MapSetsParentTerritoryIdToNullIfParentTerritoryIsNull()
        {
            var fakeTerritory = new FakeTerritory {
                ParentTerritoryId = null
            };

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.IsNull(territoryEntity.ParentTerritoryId,
                          "Parent Territory ID of entity set to non-null value.");
        }
        public void MapMapsParentTerritoryIdToEntityParentTerritoryId()
        {
            const long expectedParentTerritoryId = 3;
            var        fakeTerritory             = new FakeTerritory {
                ParentTerritoryId = expectedParentTerritoryId
            };

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.AreEqual(expectedParentTerritoryId, territoryEntity.ParentTerritoryId,
                            "Parent Territory ID not mapped to entity correctly.");
        }
        public void MapMapsTerritoryTypeToEntityTerritoryType()
        {
            const TerritoryType expectedTerritoryType = TerritoryType.Pod;
            var fakeTerritory = new FakeTerritory {
                FakeTerritoryType = expectedTerritoryType
            };

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.AreEqual((byte)expectedTerritoryType, territoryEntity.Type,
                            "Territory Type was not mapped to entity correctly.");
        }
        public void MapMapsDescriptionToEntityTerritoryDescription()
        {
            const string expectedDescription = "Bob's Territory";
            var          fakeTerritory       = new FakeTerritory {
                Description = expectedDescription
            };

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.AreEqual(expectedDescription, territoryEntity.Description,
                            "Territory Description was not mapped to entity correctly.");
        }
        public void MapMapsNameToEntityTerritoryName()
        {
            const string expectedName  = "Bob's Territory";
            var          fakeTerritory = new FakeTerritory {
                Name = expectedName
            };

            TerritoryEntity territoryEntity = _territoryFactory.Map(fakeTerritory);

            Assert.AreEqual(expectedName, territoryEntity.Name,
                            "Territory Name was not mapped to entity correctly.");
        }
        public void GetAllChildrenWithZipCodesReturns2Children1Grandchild()
        {
            const int expectedNumberOfChildren = 3;
            const int parentTerritoryId        = 9;
            var       listWithMatchingZip      = new List <ZipCode> {
                new ZipCode(12), new ZipCode(1)
            };
            Territory matchingChild1 = new FakeTerritory(1)
            {
                ZipCodes = listWithMatchingZip
            };
            Territory matchingChild2 = new FakeTerritory(2)
            {
                ZipCodes = listWithMatchingZip
            };
            Territory matchingGrandchild = new FakeTerritory(3)
            {
                ZipCodes = listWithMatchingZip
            };
            Territory nonmatchingChild = new FakeTerritory(4);

            Expect.Call(_territoryRepository.GetChildTerritories(parentTerritoryId)).
            Return(new List <Territory> {
                matchingChild1, matchingChild2, nonmatchingChild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(matchingChild1.Id)).Return(new List <Territory>());
            Expect.Call(_territoryRepository.GetChildTerritories(matchingChild2.Id)).
            Return(new List <Territory> {
                matchingGrandchild
            });
            Expect.Call(_territoryRepository.GetChildTerritories(matchingGrandchild.Id)).Return(new List <Territory>());

            _mocks.ReplayAll();
            var childTerritories = _territoryZipCodeUpdater.GetAllChildrenWithZipCodes(listWithMatchingZip, parentTerritoryId);

            _mocks.VerifyAll();

            Assert.AreEqual(expectedNumberOfChildren, childTerritories.Count(), "Returned list did not contain the expected number of children.");
            Assert.IsFalse(childTerritories.Contains(nonmatchingChild), "Returned list included nonmatching territory.");
        }