Added tests for DateTime case in ParseField function

This commit is contained in:
andronache
2021-05-04 12:09:36 +03:00
committed by Dan Christian Bogos
parent 141998f164
commit 1dc8cdbebb

View File

@@ -2221,7 +2221,7 @@ func TestFieldAsInterface(t *testing.T) {
}
}
func TestAgentRequestParseFieldDateTime(t *testing.T) {
func TestAgentRequestParseFieldDateTimeDaily(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{
@@ -2249,3 +2249,234 @@ func TestAgentRequestParseFieldDateTime(t *testing.T) {
t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day())
}
}
func TestAgentRequestParseFieldDateTimeTimeZone(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*daily", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("*daily", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Day(), expected.Day()) {
t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day())
}
}
func TestAgentRequestParseFieldDateTimeMonthly(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("*monthly", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Month(), expected.Month()) {
t.Errorf("Expected %v but received %v", finRes.Month(), expected.Month())
}
}
func TestAgentRequestParseFieldDateTimeMonthlyEstimated(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("*monthly_estimated", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Month(), expected.Month()) {
t.Errorf("Expected %v but received %v", finRes.Month(), expected.Month())
}
}
func TestAgentRequestParseFieldDateTimeYearly(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("*yearly", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Year(), expected.Year()) {
t.Errorf("Expected %v but received %v", finRes.Year(), expected.Year())
}
}
func TestAgentRequestParseFieldDateTimeMetaUnlimited(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout(utils.MetaUnlimited, utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Day(), expected.Day()) {
t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day())
}
}
func TestAgentRequestParseFieldDateTimeEmpty(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Day(), expected.Day()) {
t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day())
}
}
func TestAgentRequestParseFieldDateTimeMonthEnd(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "Local",
}
result, err := AgentReq.ParseField(fctTemp)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
expected, err := utils.ParseTimeDetectLayout("*month_endTest", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone))
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
strRes := fmt.Sprintf("%v", result)
finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes)
if err != nil {
t.Errorf("Expected %v but received %v", nil, err)
}
if !reflect.DeepEqual(finRes.Day(), expected.Day()) {
t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day())
}
}
func TestAgentRequestParseFieldDateTimeError(t *testing.T) {
tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep)
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep),
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "/",
}
_, err := AgentReq.ParseField(fctTemp)
expected := "time: invalid location name"
if err == nil || err.Error() != expected {
t.Errorf("Expected <%+v> but received <%+v>", expected, err)
}
}
func TestAgentRequestParseFieldDateTimeError2(t *testing.T) {
prsr, err := config.NewRSRParsersFromSlice([]string{"2.", "~*req.CGRID<~*opts.Converter>"})
if err != nil {
t.Fatal(err)
}
AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, prsr, "", "", nil, nil, nil)
fctTemp := &config.FCTemplate{Type: utils.MetaDateTime,
Value: prsr,
Layout: "“Mon Jan _2 15:04:05 2006”",
Timezone: "/",
}
_, err = AgentReq.ParseField(fctTemp)
expected := utils.ErrNotFound
if err == nil || err != expected {
t.Errorf("Expected <%+v> but received <%+v>", expected, err)
}
}