0
0
Fork 0

MB-20793 : Validation for min/max/start/end params for numeric/date range facets

Added few more cases in the unit tests.
This commit is contained in:
Sreekanth Sivasankaran 2017-02-02 13:05:49 +05:30
parent 78686c3fa3
commit c6f96f081d
1 changed files with 41 additions and 33 deletions

View File

@ -185,80 +185,88 @@ func TestUnmarshalingSearchResult(t *testing.T) {
}
}
func verifyErrors(t *testing.T, actual, expected error) {
//success case.
if actual == nil && actual == expected {
return
}
//actual error matches the expected error.
if actual != nil && expected != nil && actual.Error() != expected.Error() {
t.Error(actual)
} else if actual == nil {
t.Error("Expected -> " + expected.Error())
}
}
func TestFacetNumericDateRangeRequests(t *testing.T) {
var drMissingErr = fmt.Errorf("date range query must specify either start, end or both for range name 'testName'")
var nrMissingErr = fmt.Errorf("numeric range query must specify either min, max or both for range name 'testName'")
var drNrErr = fmt.Errorf("facet can only conain numeric ranges or date ranges, not both")
var drNameDupErr = fmt.Errorf("date ranges contains duplicate name 'testName'")
var nrNameDupErr = fmt.Errorf("numeric ranges contains duplicate name 'testName'")
value := float64(5)
facet := NewFacetRequest("Date_Range_Success_With_StartEnd", 1)
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", Start: time.Unix(0, 0), End: time.Now()})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Date_Range_Success_With_Start", 1)
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", Start: time.Unix(0, 0)})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Date_Range_Success_With_End", 1)
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", End: time.Now()})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Numeric_Range_Success_With_MinMax", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Min: &value, Max: &value})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Numeric_Range_Success_With_Min", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Min: &value})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Numeric_Range_Success_With_Max", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Max: &value})
if err := facet.Validate(); err != nil {
t.Error(err)
}
verifyErrors(t, facet.Validate(), nil)
facet = NewFacetRequest("Date_Range_Missing_Failure", 1)
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName2", Start: time.Unix(0, 0)})
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName1", End: time.Now()})
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName"})
if err := facet.Validate(); err != nil {
if err.Error() != drMissingErr.Error() {
t.Error(err)
}
}
verifyErrors(t, facet.Validate(), drMissingErr)
facet = NewFacetRequest("Numeric_Range_Missing_Failure", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName2", Min: &value})
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName1", Max: &value})
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName"})
if err := facet.Validate(); err != nil {
if err.Error() != nrMissingErr.Error() {
t.Error(err)
}
}
verifyErrors(t, facet.Validate(), nrMissingErr)
facet = NewFacetRequest("Numeric_And_DateRanges_Failure", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Min: &value, Max: nil})
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", Start: time.Unix(0, 0), End: time.Now()})
if err := facet.Validate(); err != nil {
if err.Error() != drNrErr.Error() {
t.Error(err)
}
}
verifyErrors(t, facet.Validate(), drNrErr)
facet = NewFacetRequest("Date_Range_Name_Repeat_Failure", 1)
facet.DateTimeRanges = make([]*dateTimeRange, 0, 1)
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", Start: time.Unix(0, 0)})
facet.DateTimeRanges = append(facet.DateTimeRanges, &dateTimeRange{Name: "testName", End: time.Now()})
verifyErrors(t, facet.Validate(), drNameDupErr)
facet = NewFacetRequest("Numeric_Range_Name_Repeat_Failure", 1)
facet.NumericRanges = make([]*numericRange, 0, 1)
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Min: &value})
facet.NumericRanges = append(facet.NumericRanges, &numericRange{Name: "testName", Max: &value})
verifyErrors(t, facet.Validate(), nrNameDupErr)
}