Exemple #1
0
        public void TestFieldsInSelectClause()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            // Duplicate fields and order are preserved.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignId", "Status", "Clicks", "Status")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Build();

            Assert.AreEqual("SELECT CampaignId, Status, Clicks, Status FROM CAMPAIGN_PERFORMANCE_REPORT",
                            query);

            // If multiple Select calls are done, only the last instance is kept.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignId", "Status")
                           .Select("Clicks", "Status")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Build();

            Assert.AreEqual("SELECT Clicks, Status FROM CAMPAIGN_PERFORMANCE_REPORT", query);
        }
Exemple #2
0
        public void TestMissingSelectClause()
        {
            ReportQueryBuilder queryBuilder = null;

            new ReportQueryBuilder();
            string query = null;

            Assert.Throws(typeof(System.ApplicationException), delegate() {
                queryBuilder = new ReportQueryBuilder();

                query = queryBuilder
                        .Where("Clicks").Equals(20)
                        .During(ReportDefinitionDateRangeType.YESTERDAY)
                        .Build();
            });
            Assert.Throws(typeof(System.ApplicationException), delegate() {
                queryBuilder = new ReportQueryBuilder();

                query = queryBuilder
                        .Select()
                        .Where("Clicks").Equals(20)
                        .During(ReportDefinitionDateRangeType.YESTERDAY)
                        .Build();
            });
        }
        public void TestMissingDuringClause()
        {
            ReportQueryBuilder queryBuilder = new ReportQueryBuilder();
            string             query        = queryBuilder.Select("CampaignId", "Status", "Clicks", "Impressions")
                                              .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("Clicks")
                                              .Equals(20).Build();

            Assert.AreEqual(
                "SELECT CampaignId, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE Clicks = 20", query);
        }
        public void TestMissingWhereClause()
        {
            ReportQueryBuilder queryBuilder = new ReportQueryBuilder();
            string             query        = queryBuilder.Select("CampaignId", "Status", "Clicks", "Impressions")
                                              .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                                              .During(ReportDefinitionDateRangeType.YESTERDAY).Build();

            Assert.AreEqual(
                "SELECT CampaignId, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT DURING YESTERDAY", query);
        }
        public void TestMissingFromClause()
        {
            ReportQueryBuilder queryBuilder = new ReportQueryBuilder();

            Assert.Throws(typeof(System.ApplicationException), delegate()
            {
                string query = queryBuilder.Select("CampaignId", "Status", "Clicks", "Impressions")
                               .Where("Clicks").Equals(20).During(ReportDefinitionDateRangeType.YESTERDAY)
                               .Build();
            });
        }
        public void TestStandardQueryConstruction()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder.Select("CampaignId", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("Clicks")
                           .Equals(20).During(ReportDefinitionDateRangeType.YESTERDAY).Build();

            Assert.AreEqual(
                "SELECT CampaignId, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE Clicks = 20 DURING YESTERDAY", query);
        }
Exemple #7
0
        public void TestFromClauseInputTypes()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            // FROM clause accepts ReportDefinitionReportType values.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Where("CampaignName").In("TEST_CAMPAIGN1", "TEST_CAMPAIGN2")
                           .Where("CampaignId").In(123, 456)
                           .During(ReportDefinitionDateRangeType.YESTERDAY)
                           .Build();

            Assert.AreEqual("SELECT CampaignName, Status, Clicks, Impressions FROM " +
                            "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName IN " +
                            "['TEST_CAMPAIGN1', 'TEST_CAMPAIGN2'] AND CampaignId IN [123, 456] DURING YESTERDAY",
                            query);

            // FROM clause accepts ReportDefinitionReportType values, specified in string format.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From("CAMPAIGN_PERFORMANCE_REPORT")
                           .Where("CampaignName").In("TEST_CAMPAIGN1", "TEST_CAMPAIGN2")
                           .Where("CampaignId").In(123, 456)
                           .During(ReportDefinitionDateRangeType.YESTERDAY)
                           .Build();

            Assert.AreEqual("SELECT CampaignName, Status, Clicks, Impressions FROM " +
                            "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName IN " +
                            "['TEST_CAMPAIGN1', 'TEST_CAMPAIGN2'] AND CampaignId IN [123, 456] DURING YESTERDAY",
                            query);
            // Exception is thrown if FROM clause cannot be parsed into a
            // known report type.
            Assert.Throws <ArgumentException>(delegate() {
                queryBuilder = new ReportQueryBuilder();
                query        = queryBuilder
                               .Select("CampaignName", "Status", "Clicks", "Impressions")
                               .From("UNKNOWN_PERFORMANCE_REPORT")
                               .Where("CampaignName").Equals("TEST_CAMPAIGN")
                               .During("Foo", "20140301")
                               .Build();
            });
        }
Exemple #8
0
        public void TestStringParameters()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            // Single string parameter.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Where("CampaignName").Equals("TEST_CAMPAIGN")
                           .During(ReportDefinitionDateRangeType.YESTERDAY)
                           .Build();

            Assert.AreEqual("SELECT CampaignName, Status, Clicks, Impressions FROM " +
                            "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'TEST_CAMPAIGN' DURING YESTERDAY",
                            query);

            // Multiple string parameters.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Where("CampaignName").Equals("TEST_CAMPAIGN")
                           .Where("Status").Equals("ENABLED")
                           .During(ReportDefinitionDateRangeType.YESTERDAY)
                           .Build();

            Assert.AreEqual("SELECT CampaignName, Status, Clicks, Impressions FROM " +
                            "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'TEST_CAMPAIGN' " +
                            "AND Status = 'ENABLED' DURING YESTERDAY", query);

            // String parameters with quotes and backslashes in them.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder
                           .Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                           .Where("CampaignName").Equals("T'EST_\"CAMPAIGN")
                           .Where("Status").Equals("ENA\\BLED")
                           .During(ReportDefinitionDateRangeType.YESTERDAY)
                           .Build();

            Assert.AreEqual("SELECT CampaignName, Status, Clicks, Impressions FROM " +
                            "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'T\\'EST_\\\"CAMPAIGN' " +
                            "AND Status = 'ENA\\\\BLED' DURING YESTERDAY", query);
        }
        public void TestMultiArgumentFunctions()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            // Multi-argument, string parameters and non-string parameters.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("CampaignName")
                           .In("TEST_CAMPAIGN1", "TEST_CAMPAIGN2").Where("CampaignId").In(123, 456)
                           .During(ReportDefinitionDateRangeType.YESTERDAY).Build();

            Assert.AreEqual(
                "SELECT CampaignName, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName IN " +
                "['TEST_CAMPAIGN1', 'TEST_CAMPAIGN2'] AND CampaignId IN [123, 456] " +
                "DURING YESTERDAY",
                query);
        }
        public void TestDuringClauseInputTypes()
        {
            ReportQueryBuilder queryBuilder = null;
            string             query        = null;

            // Exception is thrown if minDate is not in yyyyMMdd format.
            Assert.Throws <ArgumentException>(delegate()
            {
                queryBuilder = new ReportQueryBuilder();
                query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                               .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                               .Where("CampaignName").Equals("TEST_CAMPAIGN").During("Foo", "20140301")
                               .Build();
            });

            // Exception is thrown if maxDate is not in yyyyMMdd format.
            Assert.Throws <ArgumentException>(delegate()
            {
                queryBuilder = new ReportQueryBuilder();
                query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                               .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT)
                               .Where("CampaignName").Equals("TEST_CAMPAIGN").During("20140301", "Foo")
                               .Build();
            });

            // DURING query accepts date strings in yyyyMMdd format.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("CampaignName")
                           .Equals("TEST_CAMPAIGN").During("20170101", "20170131").Build();

            Assert.AreEqual(
                "SELECT CampaignName, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'TEST_CAMPAIGN' " +
                "DURING 20170101, 20170131", query);

            // DURING query accepts DateTime formats.
            DateTime minDate = new DateTime(2017, 1, 1);
            DateTime maxDate = new DateTime(2017, 1, 31);

            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("CampaignName")
                           .Equals("TEST_CAMPAIGN").During(minDate, maxDate).Build();

            Assert.AreEqual(
                "SELECT CampaignName, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'TEST_CAMPAIGN' " +
                "DURING 20170101, 20170131", query);

            // DURING supports predefined dateranges in string format.
            queryBuilder = new ReportQueryBuilder();
            query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                           .From(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT).Where("CampaignName")
                           .Equals("TEST_CAMPAIGN").During("YESTERDAY").Build();

            Assert.AreEqual(
                "SELECT CampaignName, Status, Clicks, Impressions FROM " +
                "CAMPAIGN_PERFORMANCE_REPORT WHERE CampaignName = 'TEST_CAMPAIGN' " +
                "DURING YESTERDAY", query);

            // Exception is thrown if DURING clause cannot be parsed into a
            // known date range type.
            Assert.Throws <ArgumentException>(delegate()
            {
                queryBuilder = new ReportQueryBuilder();
                query        = queryBuilder.Select("CampaignName", "Status", "Clicks", "Impressions")
                               .From("CAMPAIGN_PERFORMANCE_REPORT").Where("CampaignName")
                               .Equals("TEST_CAMPAIGN").During("Foo").Build();
            });
        }