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();
        }
예제 #3
0
        public void ReportToQueryConverter_ReturnsCache( )
        {
            Assert.That(Factory.ReportToQueryConverter, Is.TypeOf <CachingReportToQueryConverter>( ));

            CachingReportToQueryConverter caching = ( CachingReportToQueryConverter )Factory.ReportToQueryConverter;

            Assert.That(caching.Converter, Is.TypeOf <ReportToQueryConverter>( ));
        }
예제 #4
0
        public void ReportToQueryConverter( )
        {
            IReportToQueryConverter instance = Factory.ReportToQueryConverter;

            Assert.That(instance, Is.TypeOf <CachingReportToQueryConverter>( ));

            CachingReportToQueryConverter cachingConverter = ( CachingReportToQueryConverter )instance;

            Assert.That(cachingConverter.Converter, Is.TypeOf <ReportToQueryConverter>( ));
        }
예제 #5
0
        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();
        }
예제 #8
0
        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));
                }
        }