This commit is contained in:
@@ -63,6 +63,52 @@ namespace raven_integration
|
||||
public const string TokenInTheLast6Months = "{[last6months]}";
|
||||
public const string TokenInTheLastYear = "{[lastcalendaryear]}";
|
||||
|
||||
//More business time frames
|
||||
public const string TokenLastQuarter = "{[lastquarter]}";
|
||||
public const string TokenYearToDate = "{[yeartodate]}";
|
||||
public const string TokenQuarterToDate = "{[quartertodate]}";
|
||||
public const string TokenPast90Days = "{[past90days]}";
|
||||
public const string TokenPast30Days = "{[past30days]}";
|
||||
public const string TokenPast24Hours = "{[past24hours]}";
|
||||
|
||||
//The standard calendar quarters that make up the year are: January, February, and March (Q1); April, May, and June (Q2); July, August, and September (Q3); and October, November, and December (Q4). A quarter is often shown with its relevant year, as in Q1 2018 or Q1/18 which represents the first quarter of the year 2018.
|
||||
public const string TokenQ1ThisYear = "{[q1thisyear]}";
|
||||
public const string TokenQ2ThisYear = "{[q2thisyear]}";
|
||||
public const string TokenQ3ThisYear = "{[q3thisyear]}";
|
||||
public const string TokenQ4ThisYear = "{[q4thisyear]}";
|
||||
public const string TokenQ1LastYear = "{[q1lastyear]}";
|
||||
public const string TokenQ2LastYear = "{[q2lastyear]}";
|
||||
public const string TokenQ3LastYear = "{[q3lastyear]}";
|
||||
public const string TokenQ4LastYear = "{[q4lastyear]}";
|
||||
|
||||
private static int CurrentQuarter()
|
||||
{
|
||||
switch (DateTime.Now.Month)
|
||||
{
|
||||
//are we in the first quarter?
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return 1;
|
||||
|
||||
//are we in the second quarter?
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
return 2;
|
||||
//Are we in the third quarter?
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
return 3;
|
||||
default:
|
||||
return 4;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
@@ -2391,6 +2437,142 @@ namespace raven_integration
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public async void DateTokenInTheLastQuarterFilterWorks()
|
||||
{
|
||||
|
||||
var WidgetNameStart = "DateTokenInTheLastQuarterFilterWorks";
|
||||
|
||||
long IncludedWidgetId = 0;
|
||||
long ExcludedWidgetId = 0;
|
||||
|
||||
//BUILD DATES FOR THIS TEST
|
||||
var ThisQuarter = CurrentQuarter();
|
||||
DateTime InclusiveStartDate;
|
||||
DateTime ExclusiveStartDate;
|
||||
|
||||
//##################################################################################
|
||||
var FilterToken = TokenLastQuarter;
|
||||
switch (ThisQuarter)
|
||||
{
|
||||
case 1:
|
||||
//We want 5 minutes into the start of q4 last year
|
||||
InclusiveStartDate = new DateTime(DateTime.Now.AddYears(-1).Year, 10, 1, 00, 5, 00).ToUniversalTime();
|
||||
ExclusiveStartDate = DateTime.Now.ToUniversalTime();
|
||||
break;
|
||||
case 2:
|
||||
//We want 5 minutes into the start of q1 this year
|
||||
InclusiveStartDate = new DateTime(DateTime.Now.Year, 1, 1, 00, 500, 00).ToUniversalTime();
|
||||
ExclusiveStartDate = DateTime.Now.ToUniversalTime();
|
||||
break;
|
||||
case 3:
|
||||
//We want 5 minutes into the start of q2 this year
|
||||
InclusiveStartDate = new DateTime(DateTime.Now.Year, 4, 1, 00, 5, 00).ToUniversalTime();
|
||||
ExclusiveStartDate = DateTime.Now.ToUniversalTime();
|
||||
break;
|
||||
default:
|
||||
//We want 5 minutes into the start of q3 this year
|
||||
InclusiveStartDate = new DateTime(DateTime.Now.Year, 7, 1, 00, 5, 00).ToUniversalTime();
|
||||
ExclusiveStartDate = DateTime.Now.ToUniversalTime();
|
||||
break;
|
||||
}
|
||||
//##################################################################################
|
||||
|
||||
|
||||
DateTime InclusiveEndDate = InclusiveStartDate.AddHours(1);
|
||||
DateTime ExclusiveEndDate = ExclusiveStartDate.AddHours(1);
|
||||
|
||||
//CREATE TEST WIDGETS
|
||||
//included widget
|
||||
dynamic w = new JObject();
|
||||
w.name = Util.Uniquify(WidgetNameStart);
|
||||
w.startDate = InclusiveStartDate;
|
||||
w.endDate = InclusiveEndDate;
|
||||
|
||||
|
||||
ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
|
||||
Util.ValidateDataReturnResponseOk(a);
|
||||
IncludedWidgetId = a.ObjectResponse["data"]["id"].Value<long>();
|
||||
|
||||
//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<long>();
|
||||
|
||||
//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<long>();
|
||||
|
||||
//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<long> IDInResultList = new List<long>();
|
||||
int InclusiveMatchCount = 0;
|
||||
int ExclusiveMatchCount = 0;
|
||||
foreach (JObject o in v)
|
||||
{
|
||||
if (IncludedWidgetId == o["id"].Value<long>())
|
||||
InclusiveMatchCount++;
|
||||
if (ExcludedWidgetId == o["id"].Value<long>())//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 filter tests
|
||||
|
||||
Reference in New Issue
Block a user