def test_dates_bad(self): # pylint: disable=no-self-use assert_report_item_list_equal( Validator( BoolExpr(BOOL_AND, [DateInRangeExpr("date1", "date2", None) ]), ).get_reports(), [ fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="date", option_value="date1", allowed_values="ISO 8601 date", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="date", option_value="date2", allowed_values="ISO 8601 date", cannot_be_empty=False, forbidden_characters=None, ), ], )
def test_date_ok(self): # pylint: disable=no-self-use assert_report_item_list_equal( Validator( BoolExpr(BOOL_AND, [DateInRangeExpr(None, "2020-02-01", None) ]), ).get_reports(), [], )
def test_inrange_start_duration(self): self.assert_cib( DateInRangeExpr("2014-06-26", None, [("years", "1")]), """ <date_expression id="X-expr" operation="in_range" start="2014-06-26"> <duration id="X-expr-duration" years="1"/> </date_expression> """, )
def test_inrange_end(self): self.assert_cib( DateInRangeExpr(None, "2014-07-26", None), """ <date_expression id="X-expr" operation="in_range" end="2014-07-26" /> """, )
def test_date_duration_ok(self): assert_report_item_list_equal( Validator( BoolExpr( BOOL_AND, [ DateInRangeExpr( "2020-01-01T01:01:01+01:00", None, [(name, "3") for name in self.part_list], ) ], ), ).get_reports(), [], )
def test_until_greater_than_since(self): # pylint: disable=no-self-use assert_report_item_list_equal( Validator( BoolExpr( BOOL_AND, [DateInRangeExpr("2020-02-01", "2020-01-01", None)], ), ).get_reports(), [ fixture.error( reports.codes.RULE_EXPRESSION_SINCE_GREATER_THAN_UNTIL, since="2020-02-01", until="2020-01-01", ) ], )
def test_duration_bad(self): assert_report_item_list_equal( Validator( BoolExpr( BOOL_AND, [ DateInRangeExpr( "2020-01-01", None, [(name, "0") for name in self.part_list] + [("hours", "foo"), ("bad", "something")], ) ], ), ).get_reports(), [ fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="hours", option_value="foo", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="monthdays", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="months", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="moon", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="weekdays", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="weeks", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="weekyears", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="years", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTION_VALUE, option_name="yearsdays", option_value="0", allowed_values="a positive integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( reports.codes.INVALID_OPTIONS, option_names=["bad"], allowed=sorted(self.part_list), option_type="duration", allowed_patterns=[], ), fixture.error( reports.codes.RULE_EXPRESSION_OPTIONS_DUPLICATION, duplicate_option_list=["hours"], ), ], )