From c6f96f081db5d0f7965f562043ba159c49d84695 Mon Sep 17 00:00:00 2001 From: Sreekanth Sivasankaran Date: Thu, 2 Feb 2017 13:05:49 +0530 Subject: [PATCH] MB-20793 : Validation for min/max/start/end params for numeric/date range facets Added few more cases in the unit tests. --- search_test.go | 74 ++++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/search_test.go b/search_test.go index ed744eaf..84f55242 100644 --- a/search_test.go +++ b/search_test.go @@ -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) + }