public void Test_ReturnCached() { CachingReportToQueryConverter cachingReportToQueryConverter; Mock <IReportToQueryConverter> mockReportToQueryConverter; IReportToQueryConverter reportToQueryConverter; Report report; StructuredQuery structuredQuery; CachingReportToQueryConverterKey key; report = new Report(); structuredQuery = new StructuredQuery(); mockReportToQueryConverter = new Mock <IReportToQueryConverter>(MockBehavior.Strict); reportToQueryConverter = mockReportToQueryConverter.Object; cachingReportToQueryConverter = new CachingReportToQueryConverter(reportToQueryConverter); key = new CachingReportToQueryConverterKey(report, ReportToQueryConverterSettings.Default); cachingReportToQueryConverter.Cache.Add(key, new CachingReportToQueryConverterValue(structuredQuery)); Assert.That(cachingReportToQueryConverter.Convert(report), Is.SameAs(structuredQuery), "Incorrect conversion"); mockReportToQueryConverter.Verify(x => x.Convert(report), Times.Never()); mockReportToQueryConverter.VerifyAll(); }
public void Test_Cached() { CachingReportToQueryConverter cachingReportToQueryConverter; Mock <IReportToQueryConverter> mockReportToQueryConverter; IReportToQueryConverter reportToQueryConverter; Report report; StructuredQuery structuredQuery; report = new Report(); structuredQuery = new StructuredQuery(); mockReportToQueryConverter = new Mock <IReportToQueryConverter>(MockBehavior.Strict); mockReportToQueryConverter.Setup(x => x.Convert(report, It.IsAny <ReportToQueryConverterSettings>())) .Returns(() => structuredQuery) .Verifiable(); reportToQueryConverter = mockReportToQueryConverter.Object; cachingReportToQueryConverter = new CachingReportToQueryConverter(reportToQueryConverter); Assert.That(cachingReportToQueryConverter.Convert(report, null), Is.SameAs(structuredQuery), "Incorrect conversion"); Assert.That(cachingReportToQueryConverter.Cache, Has.Count.EqualTo(1)); Assert.That(cachingReportToQueryConverter.Cache, Has.Exactly(1).Property("Key").Property("ReportId").EqualTo(report.Id)); Assert.That(cachingReportToQueryConverter.Cache, Has.Exactly(1).Property("Value").Property("StructuredQuery").EqualTo(structuredQuery)); mockReportToQueryConverter.Verify(x => x.Convert(report, It.IsAny <ReportToQueryConverterSettings>()), Times.Exactly(1)); mockReportToQueryConverter.VerifyAll(); }
public void ReportToQueryConverter_ReturnsCache( ) { Assert.That(Factory.ReportToQueryConverter, Is.TypeOf <CachingReportToQueryConverter>( )); CachingReportToQueryConverter caching = ( CachingReportToQueryConverter )Factory.ReportToQueryConverter; Assert.That(caching.Converter, Is.TypeOf <ReportToQueryConverter>( )); }
public void ReportToQueryConverter( ) { IReportToQueryConverter instance = Factory.ReportToQueryConverter; Assert.That(instance, Is.TypeOf <CachingReportToQueryConverter>( )); CachingReportToQueryConverter cachingConverter = ( CachingReportToQueryConverter )instance; Assert.That(cachingConverter.Converter, Is.TypeOf <ReportToQueryConverter>( )); }
public void TestReport_ReportToQueryConverter_Cached( ) { long reportId = Entity.GetByName("AF_String").First( ).Id; // Mock IReportToQueryConverter and run again Mock <IReportToQueryConverter> mockNonCached = new Mock <IReportToQueryConverter>(MockBehavior.Strict); Mock <IReportToQueryConverter> mockCached = new Mock <IReportToQueryConverter>(MockBehavior.Strict); using (var scope = Factory.Current.BeginLifetimeScope(builder => { builder.Register(ctx => mockNonCached.Object).Keyed <IReportToQueryConverter>(Factory.NonCachedKey); builder.Register(ctx => mockCached.Object).As <IReportToQueryConverter>( ); })) using (Factory.SetCurrentScope(scope)) { var reportInterface = new ReportingInterface( ); IReportToQueryConverter realNonCached = new ReportToQueryConverter( ); IReportToQueryConverter realCached = new CachingReportToQueryConverter(mockNonCached.Object); // Setup mockNonCached .Setup(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( ))) .Returns((Report r, ReportToQueryConverterSettings s) => realNonCached.Convert(r, s)); mockCached .Setup(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( ))) .Returns((Report r, ReportToQueryConverterSettings s) => realCached.Convert(r, s)); // First run ReportResult result = reportInterface.RunReport(reportId, null); Assert.That(result, Is.Not.Null); // Second run result = reportInterface.RunReport(reportId, null); Assert.That(result, Is.Not.Null); // Verify mockNonCached .Verify(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( )), Times.Exactly(1)); mockCached .Verify(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( )), Times.Exactly(2)); } }
public void Test_Ctor() { CachingReportToQueryConverter cachingReportToQueryConverter; Mock <IReportToQueryConverter> mockReportToQueryConverter; IReportToQueryConverter reportToQueryConverter; mockReportToQueryConverter = new Mock <IReportToQueryConverter>(MockBehavior.Strict); reportToQueryConverter = mockReportToQueryConverter.Object; cachingReportToQueryConverter = new CachingReportToQueryConverter(reportToQueryConverter); Assert.That(cachingReportToQueryConverter, Has.Property("Converter").SameAs(reportToQueryConverter)); Assert.That(cachingReportToQueryConverter, Has.Property("Cache").Not.Null .And.Property("Cache").Count.EqualTo(0)); Assert.That(cachingReportToQueryConverter, Has.Property("CacheInvalidator").Not.Null); mockReportToQueryConverter.VerifyAll(); }
public void Test_EnsureCached() { CachingReportToQueryConverter cachingReportToQueryConverter; Mock <IReportToQueryConverter> mockReportToQueryConverter; IReportToQueryConverter reportToQueryConverter; Report report; StructuredQuery structuredQuery; report = new Report(); structuredQuery = new StructuredQuery(); mockReportToQueryConverter = new Mock <IReportToQueryConverter>(MockBehavior.Strict); mockReportToQueryConverter.Setup(x => x.Convert(report, It.IsAny <ReportToQueryConverterSettings>())) .Returns(() => structuredQuery) .Verifiable(); reportToQueryConverter = mockReportToQueryConverter.Object; cachingReportToQueryConverter = new CachingReportToQueryConverter(reportToQueryConverter); cachingReportToQueryConverter.Convert(report, null); cachingReportToQueryConverter.Convert(report, null); mockReportToQueryConverter.Verify(x => x.Convert(report, It.IsAny <ReportToQueryConverterSettings>( )), Times.Exactly(1)); mockReportToQueryConverter.VerifyAll(); }
public void TestReport_ReportToQueryConverter_WithFauxRelationship_Cached( ) { long reportId = CodeNameResolver.GetInstance("Template", "Report").Id; var type = Entity.GetByName <EntityType>("AA_DogBreeds").First(); long relationshipId = Factory.ScriptNameResolver.GetMemberOfType("AA_All Fields", type.Id, MemberType.Relationship).MemberId; long foreignId1 = CodeNameResolver.GetInstance("Test 01", "AA_All Fields").Id; long foreignId2 = CodeNameResolver.GetInstance("Test 02", "AA_All Fields").Id; ReportSettings settings = new ReportSettings { ReportRelationship = new ReportRelationshipSettings { Direction = ReportRelationshipSettings.ReportRelationshipDirection.Forward, RelationshipId = relationshipId }, ReportOnType = type.Id }; // Mock IReportToQueryConverter and run again Mock <IReportToQueryConverter> mockNonCached = new Mock <IReportToQueryConverter>(MockBehavior.Strict); Mock <IReportToQueryConverter> mockCached = new Mock <IReportToQueryConverter>(MockBehavior.Strict); using (var scope = Factory.Current.BeginLifetimeScope(builder => { builder.Register(ctx => mockNonCached.Object).Keyed <IReportToQueryConverter>(Factory.NonCachedKey); builder.Register(ctx => mockCached.Object).As <IReportToQueryConverter>( ); })) using (Factory.SetCurrentScope(scope)) { var reportInterface = new ReportingInterface( ); IReportToQueryConverter realNonCached = new ReportToQueryConverter( ); IReportToQueryConverter realCached = new CachingReportToQueryConverter(mockNonCached.Object); // Setup mockNonCached .Setup(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( ))) .Returns((Report r, ReportToQueryConverterSettings s) => realNonCached.Convert(r, s)); mockCached .Setup(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( ))) .Returns((Report r, ReportToQueryConverterSettings s) => realCached.Convert(r, s)); // First run settings.ReportRelationship.EntityId = foreignId1; ReportResult result = reportInterface.RunReport(reportId, settings); Assert.That(result, Is.Not.Null); Assert.That(result.GridData [0].Values [0].Value, Is.EqualTo("Afghan Hound")); // Second run settings.ReportRelationship.EntityId = foreignId2; result = reportInterface.RunReport(reportId, settings); Assert.That(result, Is.Not.Null); Assert.That(result.GridData [0].Values [0].Value, Is.EqualTo("Australian Cattle Dog")); // Verify mockNonCached .Verify(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( )), Times.Exactly(1)); mockCached .Verify(r2q => r2q.Convert(It.IsAny <Report>( ), It.IsAny <ReportToQueryConverterSettings>( )), Times.Exactly(2)); } }