This commit is contained in:
@@ -63,6 +63,52 @@ namespace raven_integration
|
|||||||
public const string TokenInTheLast6Months = "{[last6months]}";
|
public const string TokenInTheLast6Months = "{[last6months]}";
|
||||||
public const string TokenInTheLastYear = "{[lastcalendaryear]}";
|
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>
|
||||||
///
|
///
|
||||||
/// </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
|
#endregion date filter tests
|
||||||
|
|||||||
Reference in New Issue
Block a user