diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 3c8f635d..1bf0ab2c 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -1,6 +1,6 @@ # TODO (J.F.C. - Just fucking code it already) -Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTQyNjY5Njc3IiwiZXhwIjoiMTU0NTI2MTY3NyIsImlzcyI6ImF5YW5vdmEuY29tIiwiaWQiOiIxIiwiYXlhbm92YS9yb2xlcyI6IjE2NDI2In0.93IjHRXQA9c8Z0U9qcsS73KcbG3HzYWkRzF3LwCB_rY +Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTQ0NTU5NzAwIiwiZXhwIjoiMTU0NzE1MTcwMCIsImlzcyI6ImF5YW5vdmEuY29tIiwiaWQiOiIxIiwiYXlhbm92YS9yb2xlcyI6IjMyNzY3In0.fMq_8Dvia63rzN_U2zjczPvUNM40OEAeI4VOeV6ulGw ## IMMEDIATE ITEMS @@ -317,6 +317,10 @@ TODO SERVER - Client item actually: it should validate the time zone offset when the client software starts and if it's found to be off what was set offer to change it automatically - This way it works client to client and will handle DST changes almost automatically + - Trial route needs in xml comments for route to add the timezone info parameter so it shows in the api explorer as well as the current trial size + + + - Stage 2 AFTER POSTED TEST ROUND COMPLETED - Error handling at client (log? display?) - Notification of some kind (bell / toast) diff --git a/server/AyaNova/Controllers/TrialController.cs b/server/AyaNova/Controllers/TrialController.cs index 036c64af..e8cc9906 100644 --- a/server/AyaNova/Controllers/TrialController.cs +++ b/server/AyaNova/Controllers/TrialController.cs @@ -49,7 +49,7 @@ namespace AyaNova.Api.Controllers /// Valid values are "Small", "Medium", "Large", "Huge" /// Value in hours of local time zone offset from UTC / GMT. This ensures that data is generated relative to the desired time zone /// - [HttpPost("seed/{size}")] + [HttpPost("seed/{size}/{timeZoneOffset}")] public ActionResult SeedTrialDatabase([FromRoute] string size,[FromRoute] decimal timeZoneOffset ) { if (!serverState.IsOpen) diff --git a/server/AyaNova/biz/FilterSpecialTokens.cs b/server/AyaNova/biz/FilterSpecialTokens.cs index 92c9dd6c..c3f54ece 100644 --- a/server/AyaNova/biz/FilterSpecialTokens.cs +++ b/server/AyaNova/biz/FilterSpecialTokens.cs @@ -41,24 +41,16 @@ namespace AyaNova.Biz //public const string GreaterThanZero = "{[>0]}"; //https://www.klipfolio.com/resources/articles/kpi-timeframe-comparison-metrics - //Quarters: https://www.investopedia.com/terms/q/quarter.asp + //More business time frames - public const string LastQuarter = "{[lastquarter]}"; + public const string YearToDate = "{[yeartodate]}"; - public const string QuarterToDate = "{[quartertodate]}"; + public const string Past90Days = "{[past90days]}"; public const string Past30Days = "{[past30days]}"; public const string Past24Hours = "{[past24hours]}"; - //The standard calendar quarters that make up the year are: January, February, and March (Q1); April, May, and June (Q2); July, August, and September (Q3); and October, November, and December (Q4). A quarter is often shown with its relevant year, as in Q1 2018 or Q1/18 which represents the first quarter of the year 2018. - public const string Q1ThisYear = "{[q1thisyear]}"; - public const string Q2ThisYear = "{[q2thisyear]}"; - public const string Q3ThisYear = "{[q3thisyear]}"; - public const string Q4ThisYear = "{[q4thisyear]}"; - public const string Q1LastYear = "{[q1lastyear]}"; - public const string Q2LastYear = "{[q2lastyear]}"; - public const string Q3LastYear = "{[q3lastyear]}"; - public const string Q4LastYear = "{[q4lastyear]}"; + diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs index 224437b9..5ba16e06 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs @@ -308,7 +308,7 @@ namespace AyaNova.Biz // ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria"); log.LogInformation("RelativeToday (adjusted):"); log.LogInformation(RelativeToday.ToString()); - log.LogInformation("RelativeNow (adjusted):"); + log.LogInformation("RelativeNow (adjusted):"); log.LogInformation(RelativeNow.ToString()); log.LogInformation("Offset used:"); log.LogInformation(u.tz.ToString()); @@ -531,52 +531,7 @@ namespace AyaNova.Biz //======================= //NEW ONES FOR RAVEN - case FilterSpecialToken.LastQuarter: - //First determine what quarter we are in now, then get the date range for the quarter before that - switch (RelativeNow.Month) - { - //are we in the first quarter? - case 1: - case 2: - case 3: - //Then we need the dates of the last quarter of last year - //From zero hour October 1st last year - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - //To zero hour January 1 this year - dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - break; - //are we in the second quarter? - case 4: - case 5: - case 6: - //Then we need this year first quarter JAN-FEB-MAR - //From zero hour january 1 this year - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - //To zero hour April 1 this year - dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - break; - //Are we in the third quarter? - case 7: - case 8: - case 9: - //Then we need this year Second quarter APR-MAY-JUN - //From zero hour April 1 this year - dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - //To zero hour July 1 this year - dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - break; - default: - //We're in the fourth quarter - //Then we need this year Third quarter JUL-AUG-SEP - //From zero hour July 1 this year - dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - //To zero hour Oct 1 this year - dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - break; - } - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; case FilterSpecialToken.YearToDate: //From zero hour january 1 this year dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; @@ -584,42 +539,7 @@ namespace AyaNova.Biz dtBefore = RelativeNow; BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; - case FilterSpecialToken.QuarterToDate: - switch (RelativeNow.Month) - { - //FirstQuarter to date - case 1: - case 2: - case 3: - //Jan 1st to now - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = RelativeNow; - break; - //Second Quarter to date - case 4: - case 5: - case 6: - //April 1st to now - dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = RelativeNow; - break; - //Third quarter to date - case 7: - case 8: - case 9: - //From July 1 - dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = RelativeNow; - break; - default: - //Fourth quarter to date - //From Oct 1 this year - dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = RelativeNow; - break; - } - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; + case FilterSpecialToken.Past90Days: //From Now minus 90 days dtAfter = DateTime.UtcNow.AddDays(-90); @@ -641,46 +561,9 @@ namespace AyaNova.Biz dtBefore = DateTime.UtcNow; BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; - case FilterSpecialToken.Q1ThisYear: - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q2ThisYear: - dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q3ThisYear: - dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q4ThisYear: - dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q1LastYear: - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q2LastYear: - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q3LastYear: - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; - case FilterSpecialToken.Q4LastYear: - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; - dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); - BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); - break; + + default: + throw new System.ArgumentOutOfRangeException("TOKEN", sOperator, "GridToSqlCriteria invalid filter TOKEN type [" + sValue + "] IN DATE_TIME"); //----- } diff --git a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs index 03aa861c..1a43ac36 100644 --- a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs +++ b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs @@ -64,48 +64,14 @@ namespace raven_integration public const string TokenInTheLastYear = "{[lastcalendaryear]}"; //More business time frames - public const string TokenLastQuarter = "{[lastquarter]}"; + public const string TokenYearToDate = "{[yeartodate]}"; - public const string TokenQuarterToDate = "{[quartertodate]}"; + public const string TokenPast90Days = "{[past90days]}"; public const string TokenPast30Days = "{[past30days]}"; public const string TokenPast24Hours = "{[past24hours]}"; - //The standard calendar quarters that make up the year are: January, February, and March (Q1); April, May, and June (Q2); July, August, and September (Q3); and October, November, and December (Q4). A quarter is often shown with its relevant year, as in Q1 2018 or Q1/18 which represents the first quarter of the year 2018. - public const string TokenQ1ThisYear = "{[q1thisyear]}"; - public const string TokenQ2ThisYear = "{[q2thisyear]}"; - public const string TokenQ3ThisYear = "{[q3thisyear]}"; - public const string TokenQ4ThisYear = "{[q4thisyear]}"; - public const string TokenQ1LastYear = "{[q1lastyear]}"; - public const string TokenQ2LastYear = "{[q2lastyear]}"; - public const string TokenQ3LastYear = "{[q3lastyear]}"; - public const string TokenQ4LastYear = "{[q4lastyear]}"; - - private static int CurrentQuarter() - { - switch (DateTime.Now.Month) - { - //are we in the first quarter? - case 1: - case 2: - case 3: - return 1; - - //are we in the second quarter? - case 4: - case 5: - case 6: - return 2; - //Are we in the third quarter? - case 7: - case 8: - case 9: - return 3; - default: - return 4; - - } - } + #region DATE REGULAR FILTERS @@ -2442,1179 +2408,7 @@ namespace raven_integration #region DATE TOKEN FILTERS - /// - /// - /// - [Fact] - public async void DateTokenInTheLastQuarterFilterWorks() - { - - var WidgetNameStart = "DateTokenInTheLastQuarterFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - var ThisQuarter = CurrentQuarter(); - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenLastQuarter; - switch (ThisQuarter) - { - case 1: - //We want 5 minutes into the start of q4 last year - InclusiveStartDate = new DateTime(DateTime.UtcNow.AddYears(-1).Year, 10, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = DateTime.UtcNow.ToUniversalTime(); - break; - case 2: - //We want 5 minutes into the start of q1 this year - InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = DateTime.UtcNow.ToUniversalTime(); - break; - case 3: - //We want 5 minutes into the start of q2 this year - InclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = DateTime.UtcNow.ToUniversalTime(); - break; - default: - //We want 5 minutes into the start of q3 this year - InclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = DateTime.UtcNow.ToUniversalTime(); - break; - } - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQuarterToDateFilterWorks() - { - - var WidgetNameStart = "DateTokenQuarterToDateFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - var ThisQuarter = CurrentQuarter(); - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQuarterToDate; - switch (ThisQuarter) - { - case 1: - InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - break; - case 2: - InclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - break; - case 3: - InclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - break; - default: - InclusiveStartDate = new DateTime(DateTime.Now.Year, 10, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime(); - break; - } - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQ1ThisYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ1ThisYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ1ThisYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenQ2ThisYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ2ThisYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ2ThisYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQ3ThisYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ3ThisYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ3ThisYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQ4ThisYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ4ThisYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ4ThisYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year, 10, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenQ1LastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ1LastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ1LastYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 1, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 4, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenQ2LastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ2LastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ2LastYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 4, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 1, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQ3LastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ3LastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ3LastYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 7, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 4, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenQ4LastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenQ4LastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenQ4LastYear; - InclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 10, 1, 00, 5, 00).ToUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 7, 1, 00, 5, 00).ToUniversalTime(); - //################################################################################## - - - DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1); - DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1); - - //CREATE TEST WIDGETS - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = InclusiveStartDate; - w.endDate = InclusiveEndDate; - - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget - w.name = Util.Uniquify(WidgetNameStart); - w.startDate = ExclusiveStartDate; - w.endDate = ExclusiveEndDate; - - a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //CREATE FILTER - dynamic d = new JObject(); - d.name = Util.Uniquify(WidgetNameStart); - // d.ownerId = 1L; - d["public"] = true; - d.listKey = "widget"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "name"; - DataFilterNameStart.op = OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "startdate"; - FilterItem.op = OpEquality; - FilterItem.value = FilterToken; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - - //assert contains at least this test record - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - var v = ((JArray)a.ObjectResponse["data"]); - List IDInResultList = new List(); - int InclusiveMatchCount = 0; - int ExclusiveMatchCount = 0; - foreach (JObject o in v) - { - if (IncludedWidgetId == o["id"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["id"].Value())//whups - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - ExclusiveMatchCount.Should().Be(0); - - //DELETE WIDGETS - a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - - - //DELETE DATAFILTER - a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } + /// diff --git a/test/raven-integration/util.cs b/test/raven-integration/util.cs index 1a3a32c7..32ffafd7 100644 --- a/test/raven-integration/util.cs +++ b/test/raven-integration/util.cs @@ -12,8 +12,8 @@ namespace raven_integration { private static HttpClient client { get; } = new HttpClient(); - private static string API_BASE_URL = "http://localhost:7575/api/v8.0/"; - //private static string API_BASE_URL = "https://test.helloayanova.com/api/v8.0/"; + // private static string API_BASE_URL = "http://localhost:7575/api/v8.0/"; + private static string API_BASE_URL = "https://test.helloayanova.com/api/v8.0/"; public static string TEST_DATA_FOLDER = @"..\..\..\testdata\";