예제 #1
0
        public void Setup()
        {
            this.mdmService    = new Mock <IMdmEntityService <SourceSystem> >();
            this.policyFactory = new Mock <ICacheItemPolicyFactory>();
            this.policy        = new CacheItemPolicy();
            var inmemoryCacheRepo = new DefaultMdmClientCacheRepository(new InMemoryCacheRepository());

            this.policyFactory.Setup(x => x.CreatePolicy()).Returns(this.policy);

            this.cacheService = new CachePolicyMdmEntityService <SourceSystem>(this.mdmService.Object, this.policyFactory.Object, inmemoryCacheRepo);
        }
        public void ShouldRetrieveFromCacheIfClientRequestBySystemMapping()
        {
            const string CacheKey = "MDM.SourceSystem";

            // Given
            var mockMdmEntityService = new Mock <IMdmEntityService <SourceSystem> >();
            var mockConfigManager    = new Mock <IConfigurationManager>();
            var inmemoryCacheRepo    = new DefaultMdmClientCacheRepository(new InMemoryCacheRepository());

            mockConfigManager.Setup(x => x.AppSettings).Returns(new NameValueCollection {
                { "CacheItemPolicy.Expiration." + CacheKey, "3500" }
            });

            var cachePolicyFactory    = new AbsoluteCacheItemPolicyFactory(CacheKey, mockConfigManager.Object);
            var locationEntityService = new CachePolicyMdmEntityService <SourceSystem>(mockMdmEntityService.Object, cachePolicyFactory, inmemoryCacheRepo);
            var nexusId = new MdmId {
                SystemName = "Nexus", Identifier = "1", IsMdmId = true
            };
            var adcId = new MdmId {
                SystemName = "ADC", Identifier = "123", IsMdmId = false
            };
            var location = new SourceSystem
            {
                Identifiers = new MdmIdList {
                    nexusId, adcId
                },
                Details = new SourceSystemDetails {
                    Name = "Blah"
                }
            };

            //Setup a context, i.e. calling once to retrieve location should cache an entity..
            mockMdmEntityService.Setup(x => x.Get(adcId, It.IsAny <DateTime?>())).Returns(
                new WebResponse <SourceSystem> {
                Code = HttpStatusCode.OK, IsValid = true, Message = location
            });

            var response = locationEntityService.Get(adcId);

            response.Code.Should().Be(HttpStatusCode.OK);
            response.Message.ToMdmId().Identifier.Should().Be(nexusId.Identifier);

            // When , we call second time..
            response = locationEntityService.Get(adcId);

            // Then
            // It should not call mdm service again... should retrive form cache, so that verify...
            mockMdmEntityService.Verify(x => x.Get(adcId, It.IsAny <DateTime?>()), Times.Once());
            mockMdmEntityService.Verify(x => x.Get(It.IsAny <int>(), It.IsAny <DateTime?>()), Times.Never());
            response.Code.Should().Be(HttpStatusCode.OK);
            response.Message.ToMdmId().Identifier.Should().Be(nexusId.Identifier);
        }
        public void ShouldRetrieveFromCacheIfClientRequestByNexusIdMapping()
        {
            const string CacheKey = "MDM.SourceSystem";

            // Given
            var mockMdmEntityService = new Mock<IMdmEntityService<SourceSystem>>();
            var mockConfigManager = new Mock<IConfigurationManager>();
            var inmemoryCacheRepo = new DefaultMdmClientCacheRepository(new InMemoryCacheRepository());
            mockConfigManager.Setup(x => x.AppSettings).Returns(new NameValueCollection { { "CacheItemPolicy.Expiration." + CacheKey, "3500" } });
            var cachePolicyFactory = new AbsoluteCacheItemPolicyFactory(CacheKey, mockConfigManager.Object);
            var locationEntityService = new CachePolicyMdmEntityService<SourceSystem>(mockMdmEntityService.Object, cachePolicyFactory,inmemoryCacheRepo);
            var nexusId = new MdmId { SystemName = "Nexus", Identifier = "1", IsMdmId = true };
            var location = new SourceSystem
            {
                Identifiers = new MdmIdList { nexusId },
                Details = new SourceSystemDetails { Name = "Blah" }
            };

            //Setup a context, i.e. calling once to retrieve location should cache an entity..
            mockMdmEntityService.Setup(x => x.Get(1, It.IsAny<DateTime?>())).Returns(
                new WebResponse<SourceSystem> { Code = HttpStatusCode.OK, IsValid = true, Message = location });

            var response = locationEntityService.Get(nexusId);

            response.Code.Should().Be(HttpStatusCode.OK);
            response.Message.ToMdmId().Identifier.Should().Be(nexusId.Identifier);

            // When , we call second time..
            response = locationEntityService.Get(nexusId);

            // Then
            // It should not call mdm service again... should retrive form cache, so that verify...
            mockMdmEntityService.Verify(x => x.Get(1, It.IsAny<DateTime?>()), Times.Once());
            mockMdmEntityService.Verify(x => x.Get(It.IsAny<MdmId>(), It.IsAny<DateTime?>()), Times.Never());
            response.Code.Should().Be(HttpStatusCode.OK);
            response.Message.ToMdmId().Identifier.Should().Be(nexusId.Identifier);
        }
        public void Setup()
        {
            this.mdmService = new Mock<IMdmEntityService<SourceSystem>>();
            this.policyFactory = new Mock<ICacheItemPolicyFactory>();
            this.policy = new CacheItemPolicy();
            var inmemoryCacheRepo =new DefaultMdmClientCacheRepository(new InMemoryCacheRepository());
            this.policyFactory.Setup(x => x.CreatePolicy()).Returns(this.policy);

            this.cacheService = new CachePolicyMdmEntityService<SourceSystem>(this.mdmService.Object, this.policyFactory.Object,inmemoryCacheRepo);
        }