From 33b747697b4f5629c9fc2d2d50b0d19178cf44c1 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 10 Feb 2020 15:38:13 +0000 Subject: [PATCH] --- DataList/DataListFiltering.cs | 3550 +-------------------------------- util.cs | 4 +- 2 files changed, 60 insertions(+), 3494 deletions(-) diff --git a/DataList/DataListFiltering.cs b/DataList/DataListFiltering.cs index d15bda9..c6377e6 100644 --- a/DataList/DataListFiltering.cs +++ b/DataList/DataListFiltering.cs @@ -39,45 +39,45 @@ same as the server does but in a central location here for all tests to use. #region DATE FILTER TESTS - public const string TokenYesterday = "{[yesterday]}"; - public const string TokenToday = "{[today]}"; - public const string TokenTomorrow = "{[tomorrow]}"; - public const string TokenLastWeek = "{[lastweek]}"; - public const string TokenThisWeek = "{[thisweek]}"; - public const string TokenNextWeek = "{[nextweek]}"; - public const string TokenLastMonth = "{[lastmonth]}"; - public const string TokenThisMonth = "{[thismonth]}"; - public const string TokenNextMonth = "{[nextmonth]}"; - public const string TokenFourteenDayWindow = "{[14daywindow]}"; - public const string TokenPast = "{[past]}"; - public const string TokenFuture = "{[future]}"; - public const string TokenLastYear = "{[lastyear]}"; - public const string TokenThisYear = "{[thisyear]}"; - public const string TokenInTheLast3Months = "{[last3months]}"; - public const string TokenInTheLast6Months = "{[last6months]}"; - public const string TokenInTheLastYear = "{[lastcalendaryear]}"; + // public const string TokenYesterday = "{[yesterday]}"; + // public const string TokenToday = "{[today]}"; + // public const string TokenTomorrow = "{[tomorrow]}"; + // public const string TokenLastWeek = "{[lastweek]}"; + // public const string TokenThisWeek = "{[thisweek]}"; + // public const string TokenNextWeek = "{[nextweek]}"; + // public const string TokenLastMonth = "{[lastmonth]}"; + // public const string TokenThisMonth = "{[thismonth]}"; + // public const string TokenNextMonth = "{[nextmonth]}"; + // public const string TokenFourteenDayWindow = "{[14daywindow]}"; + // public const string TokenPast = "{[past]}"; + // public const string TokenFuture = "{[future]}"; + // public const string TokenLastYear = "{[lastyear]}"; + // public const string TokenThisYear = "{[thisyear]}"; + // public const string TokenInTheLast3Months = "{[last3months]}"; + // public const string TokenInTheLast6Months = "{[last6months]}"; + // public const string TokenInTheLastYear = "{[lastcalendaryear]}"; - //More business time frames + // //More business time frames - public const string TokenYearToDate = "{[yeartodate]}"; + // public const string TokenYearToDate = "{[yeartodate]}"; - public const string TokenPast90Days = "{[past90days]}"; - public const string TokenPast30Days = "{[past30days]}"; - public const string TokenPast24Hours = "{[past24hours]}"; + // public const string TokenPast90Days = "{[past90days]}"; + // public const string TokenPast30Days = "{[past30days]}"; + // public const string TokenPast24Hours = "{[past24hours]}"; - //Months THIS year - public const string TokenJanuary = "{[january]}"; - public const string TokenFebruary = "{[february]}"; - public const string TokenMarch = "{[march]}"; - public const string TokenApril = "{[april]}"; - public const string TokenMay = "{[may]}"; - public const string TokenJune = "{[june]}"; - public const string TokenJuly = "{[july]}"; - public const string TokenAugust = "{[august]}"; - public const string TokenSeptember = "{[september]}"; - public const string TokenOctober = "{[october]}"; - public const string TokenNovember = "{[november]}"; - public const string TokenDecember = "{[december]}"; + // //Months THIS year + // public const string TokenJanuary = "{[january]}"; + // public const string TokenFebruary = "{[february]}"; + // public const string TokenMarch = "{[march]}"; + // public const string TokenApril = "{[april]}"; + // public const string TokenMay = "{[may]}"; + // public const string TokenJune = "{[june]}"; + // public const string TokenJuly = "{[july]}"; + // public const string TokenAugust = "{[august]}"; + // public const string TokenSeptember = "{[september]}"; + // public const string TokenOctober = "{[october]}"; + // public const string TokenNovember = "{[november]}"; + // public const string TokenDecember = "{[december]}"; #region DATE REGULAR FILTERS @@ -726,14 +726,14 @@ same as the server does but in a central location here for all tests to use. - /// + /// /// /// [Fact] - public async void DateTokenYesterdayFilterWorks() + public async void DateOpBetweenFilterWorks() { - var WidgetNameStart = "DateTokenYesterdayFilterWorks"; + var WidgetNameStart = "DateOpBetweenFilterWorks"; long IncludedWidgetId = 0; long ExcludedWidgetId = 0; @@ -745,8 +745,8 @@ same as the server does but in a central location here for all tests to use. w.name = Util.Uniquify(WidgetNameStart); w.notes = "blah"; w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = DateTime.UtcNow.AddDays(-1); - w.endDate = DateTime.UtcNow.AddHours(1).AddDays(-1); + w.startDate = new DateTime(2019, 3, 12, 10, 0, 0).ToOffsetAdjustedUniversalTime(); + w.endDate = new DateTime(2019, 3, 12, 11, 0, 0).ToOffsetAdjustedUniversalTime(); ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); Util.ValidateDataReturnResponseOk(a); @@ -754,8 +754,8 @@ same as the server does but in a central location here for all tests to use. //Excluded widget w.name = Util.Uniquify(WidgetNameStart); - w.startDate = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); + w.startDate = new DateTime(2019, 3, 12, 8, 0, 0).ToOffsetAdjustedUniversalTime(); + w.endDate = new DateTime(2019, 3, 12, 9, 0, 0).ToOffsetAdjustedUniversalTime(); a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); Util.ValidateDataReturnResponseOk(a); @@ -780,956 +780,17 @@ same as the server does but in a central location here for all tests to use. //## INCLUSIVE FILTER dynamic FilterItem = new JObject(); FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenYesterday; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenTodayFilterWorks() - { - - var WidgetNameStart = "DateTokenTodayFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - 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 = DateTime.UtcNow.AddDays(-1); - w.endDate = DateTime.UtcNow.AddHours(1).AddDays(-1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenToday; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenTomorrowFilterWorks() - { - - var WidgetNameStart = "DateTokenTomorrowFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = DateTime.UtcNow.AddDays(1); - w.endDate = DateTime.UtcNow.AddDays(1).AddHours(1); - - 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 = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenTomorrow; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenLastWeekFilterWorks() - { - - var WidgetNameStart = "DateTokenLastWeekFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //My theory is any date - 7 days is last week if you go sunday to sunday - w.startDate = DateTime.UtcNow.AddDays(-7); - w.endDate = DateTime.UtcNow.AddHours(1).AddDays(-7); - - 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 = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenLastWeek; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenThisWeekFilterWorks() - { - - var WidgetNameStart = "DateTokenThisWeekFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - 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); - //My theory is any date - 7 days is last week if you go sunday to sunday - w.startDate = DateTime.UtcNow.AddDays(-7); - w.endDate = DateTime.UtcNow.AddHours(1).AddDays(-7); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenThisWeek; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenNextWeekFilterWorks() - { - - var WidgetNameStart = "DateTokenNextWeekFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //My theory is any date + 7 days is next week if you go sunday to sunday - w.startDate = DateTime.UtcNow.AddDays(7); - w.endDate = DateTime.UtcNow.AddHours(1).AddDays(7); - - - 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 = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenNextWeek; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenLastMonthFilterWorks() - { - - var WidgetNameStart = "DateTokenLastMonthFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //Put it right at midnight this month to ensure boundaries are respected - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenLastMonth; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - ExclusiveMatchCount++; - } - - InclusiveMatchCount.Should().BeGreaterOrEqualTo(1); - //BUGBUG: on 4/30/2019 DST ISSUE? Failing here, found 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenThisMonthFilterWorks() - { - - var WidgetNameStart = "DateTokenThisMonthFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //Put it right at midnight this month to ensure boundaries are respected - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenThisMonth; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 - //BUGBUG: on 4/30/2019 DST ISSUE? Failing here, found 0 expected 1 - ((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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenNextMonthFilterWorks() - { - //This test is time zone sensitive and thus uses relative today - //If any other test are to fail this way they will need to be done the same way - var WidgetNameStart = "DateTokenNextMonthFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget (Date range is within NEXT month from the 2nd at midnight to the second at 1am) - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - - //Put it right at midnight next month to ensure boundaries are respected - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 2, 00, 00, 00).AddMonths(1); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 2, 00, 00, 00).AddMonths(1).AddHours(1); - - ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString()); - Util.ValidateDataReturnResponseOk(a); - IncludedWidgetId = a.ObjectResponse["data"]["id"].Value(); - - //Excluded widget (Date range is within NEXT month from one second **before** the 1st to one hour later) - w.name = Util.Uniquify(WidgetNameStart); - //First day of next month minus 1 second - w.startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddMonths(1).AddSeconds(-1); - w.endDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00).AddMonths(1).AddSeconds(-1).AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenNextMonth; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - //SELECT *, xmin FROM AWIDGET where name Like 'DateTokenNextMonthFilterWorks%' AND startdate >'2019-01-01T15:59:59.0000000Z' AND startdate <'2019-02-01T16:00:00.0000000Z' - a = await Util.GetAsync($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateToken14DayWindowFilterWorks() - { - - var WidgetNameStart = "DateToken14DayWindowFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - - w.startDate = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - 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); - //9 days ago will be outside the 14 day window - w.startDate = DateTime.UtcNow.AddDays(-9); - w.endDate = DateTime.UtcNow.AddDays(-9).AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenFourteenDayWindow; + FilterItem.op = Util.OpGreaterThanOrEqualTo; + FilterItem.value = new DateTime(2019, 3, 12, 10, 0, 0).ToOffsetAdjustedUniversalTime(); dfilter.Add(FilterItem); + + dynamic FilterItem2 = new JObject(); + FilterItem2.fld = "widgetstartdate"; + FilterItem2.op = Util.OpLessThanOrEqualTo; + FilterItem2.value = new DateTime(2019, 3, 12, 11, 0, 0).ToOffsetAdjustedUniversalTime(); + dfilter.Add(FilterItem2); + d.filter = dfilter.ToString();//it expects it to be a json string, not actual json a = await Util.PostAsync("DataListFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); @@ -1748,6 +809,13 @@ same as the server does but in a central location here for all tests to use. 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++; + // } foreach (JArray ja in v) { JObject o = ja[0] as JObject; @@ -1776,2509 +844,7 @@ same as the server does but in a central location here for all tests to use. - /// - /// - /// - [Fact] - public async void DateTokenPastFilterWorks() - { - - var WidgetNameStart = "DateTokenPastFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //Test if for the past, definitely going to be in the past when the list is fetched after saving, but will it work with the server on another machine?? - //Best to pad in 5 minutes to be on the safe side, these days no two computers on earth should be out by more than 5 minutes to UTC from each other - w.startDate = DateTime.UtcNow.AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddMinutes(-5).AddHours(1); - - 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); - //8 days ago will be outside the 14 day window - w.startDate = DateTime.UtcNow.AddMonths(1); - w.endDate = DateTime.UtcNow.AddMonths(1).AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenPast; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenFutureFilterWorks() - { - - var WidgetNameStart = "DateTokenFutureFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow.AddMinutes(5); - w.endDate = DateTime.UtcNow.AddMinutes(5).AddHours(1); - - 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 = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenFuture; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenLastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenLastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow.AddYears(-1).AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddYears(-1).AddMinutes(-5).AddHours(1); - - 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 = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenLastYear; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - - - /// - /// - /// - [Fact] - public async void DateTokenThisYearFilterWorks() - { - - var WidgetNameStart = "DateTokenThisYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow; - w.endDate = DateTime.UtcNow.AddHours(1); - - 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 = DateTime.UtcNow.AddYears(-1).AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddYears(-1).AddMinutes(-5).AddHours(1); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenThisYear; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - - - /// - /// - /// - [Fact] - public async void DateTokenInTheLast3MonthsFilterWorks() - { - - var WidgetNameStart = "DateTokenInTheLast3MonthsFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(5); - w.endDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(5).AddHours(1); - - 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 = DateTime.UtcNow.AddMonths(-3).AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(-5).AddHours(1); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenInTheLast3Months; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenInTheLast6MonthsFilterWorks() - { - - var WidgetNameStart = "DateTokenInTheLast6MonthsFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow.AddMonths(-6).AddMinutes(5); - w.endDate = DateTime.UtcNow.AddMonths(-6).AddMinutes(5).AddHours(1); - - 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 = DateTime.UtcNow.AddMonths(-6).AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddMonths(-6).AddMinutes(-5).AddHours(1); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenInTheLast6Months; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenInTheLastYearFilterWorks() - { - - var WidgetNameStart = "DateTokenInTheLastYearFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //#### - w.startDate = DateTime.UtcNow.AddDays(-365).AddMinutes(5); - w.endDate = DateTime.UtcNow.AddDays(-365).AddMinutes(5).AddHours(1); - - 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 = DateTime.UtcNow.AddDays(-365).AddMinutes(-5); - w.endDate = DateTime.UtcNow.AddDays(-365).AddMinutes(-5).AddHours(1); - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = TokenInTheLastYear; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - #endregion DATE REGULAR FILTERS - - #region DATE TOKEN FILTERS - - - - - /// - /// - /// - [Fact] - public async void DateTokenYearToDateFilterWorks() - { - - var WidgetNameStart = "DateTokenYearToDateFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenYearToDate; - InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToOffsetAdjustedUniversalTime(); - ExclusiveStartDate = new DateTime(DateTime.Now.Year - 1, 4, 1, 00, 5, 00).ToOffsetAdjustedUniversalTime(); - //################################################################################## - - - 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.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.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("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenPast90DaysFilterWorks() - { - - var WidgetNameStart = "DateTokenPast90DaysFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenPast90Days; - InclusiveStartDate = DateTime.Now.AddDays(-90).AddMinutes(5).ToOffsetAdjustedUniversalTime(); - ExclusiveStartDate = DateTime.Now.AddDays(-90).AddMinutes(-5).ToOffsetAdjustedUniversalTime(); - //################################################################################## - - - 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.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.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("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenPast30DaysFilterWorks() - { - - var WidgetNameStart = "DateTokenPast30DaysFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenPast30Days; - InclusiveStartDate = DateTime.Now.AddDays(-30).AddMinutes(5).ToOffsetAdjustedUniversalTime(); - ExclusiveStartDate = DateTime.Now.AddDays(-30).AddMinutes(-5).ToOffsetAdjustedUniversalTime(); - //################################################################################## - - - 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.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.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("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenPast24HoursFilterWorks() - { - - var WidgetNameStart = "DateTokenPast24HoursFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //BUILD DATES FOR THIS TEST - - DateTime InclusiveStartDate; - DateTime ExclusiveStartDate; - - //################################################################################## - var FilterToken = TokenPast24Hours; - InclusiveStartDate = DateTime.Now.AddHours(-24).AddMinutes(5).ToOffsetAdjustedUniversalTime(); - ExclusiveStartDate = DateTime.Now.AddHours(-24).AddMinutes(-5).ToOffsetAdjustedUniversalTime(); - //################################################################################## - - - 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.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.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("DataListFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString()); - Util.ValidateDataReturnResponseOk(a); - - long DataFilterId = a.ObjectResponse["data"]["id"].Value(); - - //NOW FETCH WIDGET LIST WITH FILTER - //" where (awidget.name Like 'DateTokenPast24HoursFilterWorks%') AND (awidget.startdate >'2020-02-02T22:55:31.0474690Z' AND awidget.startdate <'2020-02-03T22:55:31.0474696Z')" - a = await Util.GetAsync($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenJanuaryFilterWorks() - { - int MonthNumberUnderTest = 1; - string DateTokenUnderTest = TokenJanuary; - - var WidgetNameStart = "DateTokenJanuaryFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenFebruaryFilterWorks() - { - int MonthNumberUnderTest = 2; - string DateTokenUnderTest = TokenFebruary; - - var WidgetNameStart = "DateTokenFebruaryFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenMarchFilterWorks() - { - int MonthNumberUnderTest = 3; - string DateTokenUnderTest = TokenMarch; - - var WidgetNameStart = "DateTokenMarchFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenAprilFilterWorks() - { - int MonthNumberUnderTest = 4; - string DateTokenUnderTest = TokenApril; - - var WidgetNameStart = "DateTokenAprilFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - //ToOffsetAdjustedUniversalTime - // w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - // w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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); - //First day of this month minus 2 days equals second to last day of last month - // w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - // w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenMayFilterWorks() - { - int MonthNumberUnderTest = 5; - string DateTokenUnderTest = TokenMay; - - var WidgetNameStart = "DateTokenMayFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - /// - /// - /// - [Fact] - public async void DateTokenJuneFilterWorks() - { - int MonthNumberUnderTest = 6; - string DateTokenUnderTest = TokenJune; - - var WidgetNameStart = "DateTokenJuneFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenJulyFilterWorks() - { - int MonthNumberUnderTest = 7; - string DateTokenUnderTest = TokenJuly; - - var WidgetNameStart = "DateTokenJulyFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenTokenAugustFilterWorks() - { - int MonthNumberUnderTest = 8; - string DateTokenUnderTest = TokenAugust; - - var WidgetNameStart = "DateTokenTokenAugustFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenSeptemberFilterWorks() - { - int MonthNumberUnderTest = 9; - string DateTokenUnderTest = TokenSeptember; - - var WidgetNameStart = "DateTokenSeptemberFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenOctoberFilterWorks() - { - int MonthNumberUnderTest = 10; - string DateTokenUnderTest = TokenOctober; - - var WidgetNameStart = "DateTokenOctoberFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - /// - /// - /// - [Fact] - public async void DateTokenNovemberFilterWorks() - { - int MonthNumberUnderTest = 11; - string DateTokenUnderTest = TokenNovember; - - var WidgetNameStart = "DateTokenNovemberFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - /// - /// - /// - [Fact] - public async void DateTokenDecemberFilterWorks() - { - int MonthNumberUnderTest = 12; - string DateTokenUnderTest = TokenDecember; - - var WidgetNameStart = "DateTokenDecemberFilterWorks"; - - long IncludedWidgetId = 0; - long ExcludedWidgetId = 0; - - //CREATE TEST WIDGETS - - //included widget - dynamic w = new JObject(); - w.name = Util.Uniquify(WidgetNameStart); - w.notes = "blah"; - w.customFields = Util.WidgetRequiredCustomFieldsJsonString(); - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddHours(1).ToOffsetAdjustedUniversalTime(); - - 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); - //First day of this month minus 2 days equals second to last day of last month - w.startDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).ToOffsetAdjustedUniversalTime(); - w.endDate = new DateTime(DateTime.Today.Year, MonthNumberUnderTest, 1, 00, 00, 00).AddDays(-2).AddHours(1).ToOffsetAdjustedUniversalTime(); - - - 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["public"] = true; - d.listKey = "TestWidgetDataList"; - - dynamic dfilter = new JArray(); - - //name starts with filter to constrict to widgets that this test block created only - dynamic DataFilterNameStart = new JObject(); - DataFilterNameStart.fld = "widgetname"; - DataFilterNameStart.op = Util.OpStartsWith; - DataFilterNameStart.value = WidgetNameStart; - dfilter.Add(DataFilterNameStart); - - //## INCLUSIVE FILTER - dynamic FilterItem = new JObject(); - FilterItem.fld = "widgetstartdate"; - FilterItem.op = Util.OpEquality; - FilterItem.value = DateTokenUnderTest; - dfilter.Add(FilterItem); - - d.filter = dfilter.ToString();//it expects it to be a json string, not actual json - - a = await Util.PostAsync("DataListFilter", 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($"DataList/list?DataListKey=TestWidgetDataList&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 (JArray ja in v) - { - JObject o = ja[0] as JObject; - - if (IncludedWidgetId == o["v"].Value()) - InclusiveMatchCount++; - if (ExcludedWidgetId == o["v"].Value()) - 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("DataListFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull")); - Util.ValidateHTTPStatusCode(a, 204); - } - - - - #endregion date token filters //======== #endregion date filter tests diff --git a/util.cs b/util.cs index 46799c6..907db88 100644 --- a/util.cs +++ b/util.cs @@ -28,8 +28,8 @@ namespace raven_integration public static class Util { //####################################################################################################### - //public static string API_BASE_URL = "http://localhost:7575/api/v8/"; - public static string API_BASE_URL = "https://test.helloayanova.com/api/v8.0/"; + public static string API_BASE_URL = "http://localhost:7575/api/v8/"; + // public static string API_BASE_URL = "https://test.helloayanova.com/api/v8.0/"; public static string TEST_DATA_FOLDER = @"..\..\..\testdata\"; //#######################################################################################################