private bool ResultDataTreeIsCorrect(OrganisationHierarchyCacheItem result)
        {
            //work down the tree and check the child counts and ids of children.
            Assert.AreEqual(result.OrganisationId, _orgA1, "Top level Id expected to be _orgA1");
            Assert.AreEqual(_orgA1.ToString(), result.Metadata[_orgA1.ToString()]);

            Assert.AreEqual(3, result.ChildOrganisations.Count, "Expected top level to have 3 children");
            Assert.IsNotNull(result.ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgB1), "Expected B1 as child id");
            Assert.IsNotNull(result.ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgB2), "Expected B2 as child id");
            Assert.IsNotNull(result.ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgD6), "Expected D6 as child id");

            Assert.AreEqual(2, result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.Count, "Expected B1 to have 2 children");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgC1), "Expected C1 as child id");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgD4), "Expected D4 as child id");

            Assert.AreEqual(2, result.ChildOrganisations.Single(x => x.OrganisationId == _orgB2).ChildOrganisations.Count, "Expected B2 to have 2 children");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB2).ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgC2), "Expected C2 as child id");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB2).ChildOrganisations.SingleOrDefault(x => x.OrganisationId == _orgD4), "Expected D4 as child id");

            Assert.AreEqual(3, result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.Single(x => x.OrganisationId == _orgC1).ChildOrganisations.Count, "Expected C1 to have 3 children");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.Single(x => x.OrganisationId == _orgC1).ChildOrganisations.SingleOrDefault(x => x.OrganisationId.Equals(_orgD1)), "Expected D1 as child id");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.Single(x => x.OrganisationId == _orgC1).ChildOrganisations.SingleOrDefault(x => x.OrganisationId.Equals(_orgD2)), "Expected D2 as child id");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB1).ChildOrganisations.Single(x => x.OrganisationId == _orgC1).ChildOrganisations.SingleOrDefault(x => x.OrganisationId.Equals(_orgD3)), "Expected D3 as child id");

            Assert.AreEqual(1, result.ChildOrganisations.Single(x => x.OrganisationId == _orgB2).ChildOrganisations.Single(x => x.OrganisationId == _orgC2).ChildOrganisations.Count, "Expected C2 to have 1 child");
            Assert.IsNotNull(result.ChildOrganisations.Single(x => x.OrganisationId == _orgB2).ChildOrganisations.Single(x => x.OrganisationId == _orgC2).ChildOrganisations.SingleOrDefault(x => x.OrganisationId.Equals(_orgD5)), "Expected D5 as child id");

            return(true);
        }
        public void ContainsOrganisationId_WithMultiLevelTreeThatDoesContainId_ReturnsTrue()
        {
            var targetId = Guid.NewGuid();

            var bottomLevelTree = new OrganisationHierarchyCacheItem
            {
                OrganisationId = targetId
            };
            var middleLevelTree = new OrganisationHierarchyCacheItem
            {
                OrganisationId     = Guid.NewGuid(),
                ChildOrganisations = new List <OrganisationHierarchyCacheItem> {
                    bottomLevelTree
                }
            };
            var sut = new OrganisationHierarchyCacheItem
            {
                OrganisationId     = Guid.NewGuid(),
                ChildOrganisations = new List <OrganisationHierarchyCacheItem> {
                    middleLevelTree
                }
            };

            //act
            var result = sut.ContainsOrganisationId(targetId);

            Assert.IsTrue(result);
        }
示例#3
0
        public void Consume_CallsAddOrUpdate_WithCorrectObjectValue()
        {
            var organisationTreeItemCacheMock = new Mock <IOrganisationHierarchyCache>();

            var sut = new OrganisationHierarchyCacheItemBackplaneConsumer(_loggerMock.Object, organisationTreeItemCacheMock.Object);

            var orgTreeItem = new OrganisationHierarchyCacheItem
            {
                OrganisationId = Guid.NewGuid(),
                Metadata       = new CaseInsensitiveDictionary {
                    { "key1", "value1" }, { "key2", "value2" }
                },
                ChildOrganisations = new List <OrganisationHierarchyCacheItem>
                {
                    new OrganisationHierarchyCacheItem
                    {
                        OrganisationId     = Guid.NewGuid(),
                        Metadata           = new CaseInsensitiveDictionary(),
                        ChildOrganisations = null
                    },
                    new OrganisationHierarchyCacheItem
                    {
                        OrganisationId     = Guid.NewGuid(),
                        Metadata           = new CaseInsensitiveDictionary(),
                        ChildOrganisations = null
                    },
                }
            };

            sut.Consume(orgTreeItem);

            organisationTreeItemCacheMock.Verify(x => x.AddOrUpdate(orgTreeItem.OrganisationId, orgTreeItem));

            organisationTreeItemCacheMock.VerifyNoOtherCalls();
        }
        public void ContainsOrganisationId_WithIdAtTopLevel_ReturnsTrue()
        {
            var targetId = Guid.NewGuid();

            var sut = new OrganisationHierarchyCacheItem {
                OrganisationId = targetId
            };

            //act
            var result = sut.ContainsOrganisationId(targetId);

            Assert.IsTrue(result);
        }
        public void AddOrUpdate_WithInitialAddEntry_ThenUpdateEntry_AddsAndUpdatesEntryCorrectlyAndNoMessagesArePublished()
        {
            var key          = new Guid("bc44ffe6-0533-47c8-986b-e40347a4d072");
            var initialValue = new OrganisationHierarchyCacheItem {
                OrganisationId = key, ChildOrganisations = null, Metadata = null
            };
            var updatedValue = new OrganisationHierarchyCacheItem {
                OrganisationId = key, ChildOrganisations = new List <OrganisationHierarchyCacheItem>(), Metadata = new CaseInsensitiveDictionary {
                    { "key1", "value1" }
                }
            };

            var sut = new Core.OrganisationHierarchyCache.OrganisationHierarchyCache(_loggerMock.Object, _requestStoreMock.Object, _dateTimeProviderMock.Object, _backplaneMock.Object, _configurationManagerMock.Object);

            sut.AddOrUpdate(key, initialValue);
            Assert.AreEqual(initialValue, sut.GetValue(key));

            sut.AddOrUpdate(key, updatedValue);
            Assert.AreEqual(updatedValue, sut.GetValue(key));

            _requestStoreMock.VerifyNoOtherCalls();
            _backplaneMock.VerifyNoOtherCalls();
        }