diff --git a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs
index 7f90d823..ca8feaf8 100644
--- a/test/raven-integration/DataFilter/DataFilterFilteringLists.cs
+++ b/test/raven-integration/DataFilter/DataFilterFilteringLists.cs
@@ -2595,9 +2595,9 @@ namespace raven_integration
DateTime ExclusiveStartDate;
//##################################################################################
- var FilterToken = TokenQ1ThisYear;
+ var FilterToken = TokenQ1ThisYear;
InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime();
- ExclusiveStartDate = DateTime.Now.ToUniversalTime();
+ ExclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime();
//##################################################################################
@@ -2691,6 +2691,346 @@ namespace raven_integration
}
+
+ ///
+ ///
+ ///
+ [Fact]
+ public async void DateTokenQ2ThisYearFilterWorks()
+ {
+
+ var WidgetNameStart = "DateTokenQ2ThisYearFilterWorks";
+
+ long IncludedWidgetId = 0;
+ long ExcludedWidgetId = 0;
+
+ //BUILD DATES FOR THIS TEST
+
+ DateTime InclusiveStartDate;
+ DateTime ExclusiveStartDate;
+
+ //##################################################################################
+ var FilterToken = TokenQ2ThisYear;
+ InclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime();
+ ExclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 5, 00).ToUniversalTime();
+ //##################################################################################
+
+
+ DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1);
+ DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1);
+
+ //CREATE TEST WIDGETS
+ //included widget
+ dynamic w = new JObject();
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = InclusiveStartDate;
+ w.endDate = InclusiveEndDate;
+
+
+ ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ IncludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //Excluded widget
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = ExclusiveStartDate;
+ w.endDate = ExclusiveEndDate;
+
+ a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //CREATE FILTER
+ dynamic d = new JObject();
+ d.name = Util.Uniquify(WidgetNameStart);
+ // d.ownerId = 1L;
+ d["public"] = true;
+ d.listKey = "widget";
+
+ dynamic dfilter = new JArray();
+
+ //name starts with filter to constrict to widgets that this test block created only
+ dynamic DataFilterNameStart = new JObject();
+ DataFilterNameStart.fld = "name";
+ DataFilterNameStart.op = OpStartsWith;
+ DataFilterNameStart.value = WidgetNameStart;
+ dfilter.Add(DataFilterNameStart);
+
+ //## INCLUSIVE FILTER
+ dynamic FilterItem = new JObject();
+ FilterItem.fld = "startdate";
+ FilterItem.op = OpEquality;
+ FilterItem.value = FilterToken;
+ dfilter.Add(FilterItem);
+
+ d.filter = dfilter.ToString();//it expects it to be a json string, not actual json
+
+ a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+
+ long DataFilterId = a.ObjectResponse["data"]["id"].Value();
+
+ //NOW FETCH WIDGET LIST WITH FILTER
+ a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in"));
+ Util.ValidateDataReturnResponseOk(a);
+ Util.ValidateHTTPStatusCode(a, 200);
+
+ //assert contains at least this test record
+ ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0);
+ var v = ((JArray)a.ObjectResponse["data"]);
+ List IDInResultList = new List();
+ int InclusiveMatchCount = 0;
+ int ExclusiveMatchCount = 0;
+ foreach (JObject o in v)
+ {
+ if (IncludedWidgetId == o["id"].Value())
+ InclusiveMatchCount++;
+ if (ExcludedWidgetId == o["id"].Value())//whups
+ ExclusiveMatchCount++;
+ }
+
+ InclusiveMatchCount.Should().BeGreaterOrEqualTo(1);
+ ExclusiveMatchCount.Should().Be(0);
+
+ //DELETE WIDGETS
+ a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+ a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+
+ //DELETE DATAFILTER
+ a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+ }
+
+ ///
+ ///
+ ///
+ [Fact]
+ public async void DateTokenQ3ThisYearFilterWorks()
+ {
+
+ var WidgetNameStart = "DateTokenQ3ThisYearFilterWorks";
+
+ long IncludedWidgetId = 0;
+ long ExcludedWidgetId = 0;
+
+ //BUILD DATES FOR THIS TEST
+
+ DateTime InclusiveStartDate;
+ DateTime ExclusiveStartDate;
+
+ //##################################################################################
+ var FilterToken = TokenQ3ThisYear;
+ InclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime();
+ ExclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime();
+ //##################################################################################
+
+
+ DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1);
+ DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1);
+
+ //CREATE TEST WIDGETS
+ //included widget
+ dynamic w = new JObject();
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = InclusiveStartDate;
+ w.endDate = InclusiveEndDate;
+
+
+ ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ IncludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //Excluded widget
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = ExclusiveStartDate;
+ w.endDate = ExclusiveEndDate;
+
+ a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //CREATE FILTER
+ dynamic d = new JObject();
+ d.name = Util.Uniquify(WidgetNameStart);
+ // d.ownerId = 1L;
+ d["public"] = true;
+ d.listKey = "widget";
+
+ dynamic dfilter = new JArray();
+
+ //name starts with filter to constrict to widgets that this test block created only
+ dynamic DataFilterNameStart = new JObject();
+ DataFilterNameStart.fld = "name";
+ DataFilterNameStart.op = OpStartsWith;
+ DataFilterNameStart.value = WidgetNameStart;
+ dfilter.Add(DataFilterNameStart);
+
+ //## INCLUSIVE FILTER
+ dynamic FilterItem = new JObject();
+ FilterItem.fld = "startdate";
+ FilterItem.op = OpEquality;
+ FilterItem.value = FilterToken;
+ dfilter.Add(FilterItem);
+
+ d.filter = dfilter.ToString();//it expects it to be a json string, not actual json
+
+ a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+
+ long DataFilterId = a.ObjectResponse["data"]["id"].Value();
+
+ //NOW FETCH WIDGET LIST WITH FILTER
+ a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in"));
+ Util.ValidateDataReturnResponseOk(a);
+ Util.ValidateHTTPStatusCode(a, 200);
+
+ //assert contains at least this test record
+ ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0);
+ var v = ((JArray)a.ObjectResponse["data"]);
+ List IDInResultList = new List();
+ int InclusiveMatchCount = 0;
+ int ExclusiveMatchCount = 0;
+ foreach (JObject o in v)
+ {
+ if (IncludedWidgetId == o["id"].Value())
+ InclusiveMatchCount++;
+ if (ExcludedWidgetId == o["id"].Value())//whups
+ ExclusiveMatchCount++;
+ }
+
+ InclusiveMatchCount.Should().BeGreaterOrEqualTo(1);
+ ExclusiveMatchCount.Should().Be(0);
+
+ //DELETE WIDGETS
+ a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+ a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+
+ //DELETE DATAFILTER
+ a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+ }
+
+ ///
+ ///
+ ///
+ [Fact]
+ public async void DateTokenQ4ThisYearFilterWorks()
+ {
+
+ var WidgetNameStart = "DateTokenQ4ThisYearFilterWorks";
+
+ long IncludedWidgetId = 0;
+ long ExcludedWidgetId = 0;
+
+ //BUILD DATES FOR THIS TEST
+
+ DateTime InclusiveStartDate;
+ DateTime ExclusiveStartDate;
+
+ //##################################################################################
+ var FilterToken = TokenQ4ThisYear;
+ InclusiveStartDate = new DateTime(DateTime.Now.Year, 10, 1, 00, 5, 00).ToUniversalTime();
+ ExclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime();
+ //##################################################################################
+
+
+ DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1);
+ DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1);
+
+ //CREATE TEST WIDGETS
+ //included widget
+ dynamic w = new JObject();
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = InclusiveStartDate;
+ w.endDate = InclusiveEndDate;
+
+
+ ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ IncludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //Excluded widget
+ w.name = Util.Uniquify(WidgetNameStart);
+ w.startDate = ExclusiveStartDate;
+ w.endDate = ExclusiveEndDate;
+
+ a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+ ExcludedWidgetId = a.ObjectResponse["data"]["id"].Value();
+
+ //CREATE FILTER
+ dynamic d = new JObject();
+ d.name = Util.Uniquify(WidgetNameStart);
+ // d.ownerId = 1L;
+ d["public"] = true;
+ d.listKey = "widget";
+
+ dynamic dfilter = new JArray();
+
+ //name starts with filter to constrict to widgets that this test block created only
+ dynamic DataFilterNameStart = new JObject();
+ DataFilterNameStart.fld = "name";
+ DataFilterNameStart.op = OpStartsWith;
+ DataFilterNameStart.value = WidgetNameStart;
+ dfilter.Add(DataFilterNameStart);
+
+ //## INCLUSIVE FILTER
+ dynamic FilterItem = new JObject();
+ FilterItem.fld = "startdate";
+ FilterItem.op = OpEquality;
+ FilterItem.value = FilterToken;
+ dfilter.Add(FilterItem);
+
+ d.filter = dfilter.ToString();//it expects it to be a json string, not actual json
+
+ a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
+ Util.ValidateDataReturnResponseOk(a);
+
+ long DataFilterId = a.ObjectResponse["data"]["id"].Value();
+
+ //NOW FETCH WIDGET LIST WITH FILTER
+ a = await Util.GetAsync($"Widget/listwidgets?Offset=0&Limit=999&DataFilterId={DataFilterId.ToString()}", await Util.GetTokenAsync("manager", "l3tm3in"));
+ Util.ValidateDataReturnResponseOk(a);
+ Util.ValidateHTTPStatusCode(a, 200);
+
+ //assert contains at least this test record
+ ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0);
+ var v = ((JArray)a.ObjectResponse["data"]);
+ List IDInResultList = new List();
+ int InclusiveMatchCount = 0;
+ int ExclusiveMatchCount = 0;
+ foreach (JObject o in v)
+ {
+ if (IncludedWidgetId == o["id"].Value())
+ InclusiveMatchCount++;
+ if (ExcludedWidgetId == o["id"].Value())//whups
+ ExclusiveMatchCount++;
+ }
+
+ InclusiveMatchCount.Should().BeGreaterOrEqualTo(1);
+ ExclusiveMatchCount.Should().Be(0);
+
+ //DELETE WIDGETS
+ a = await Util.DeleteAsync("Widget/" + IncludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+ a = await Util.DeleteAsync("Widget/" + ExcludedWidgetId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+
+
+ //DELETE DATAFILTER
+ a = await Util.DeleteAsync("DataFilter/" + DataFilterId.ToString(), await Util.GetTokenAsync("BizAdminFull"));
+ Util.ValidateHTTPStatusCode(a, 204);
+ }
+
#endregion date token filters
//========