def test_reminder(monkeypatch): # valid reminders pass monkeypatch.setattr("builtins.input", lambda: "10m email") validate_input(REMINDER) == "10m email" monkeypatch.setattr("builtins.input", lambda: "10 popup") validate_input(REMINDER) == "10m email" monkeypatch.setattr("builtins.input", lambda: "10m sms") validate_input(REMINDER) == "10m email" monkeypatch.setattr("builtins.input", lambda: "12323") validate_input(REMINDER) == "10m email" # invalid reminder raises ValidationError monkeypatch.setattr("builtins.input", lambda: "meaningless") with pytest.raises(ValidationError): validate_input(REMINDER) == ValidationError( "Format: <number><w|d|h|m> <popup|email|sms>\n") # invalid reminder raises ValidationError monkeypatch.setattr("builtins.input", lambda: "") with pytest.raises(ValidationError): validate_input(REMINDER) == ValidationError( "Format: <number><w|d|h|m> <popup|email|sms>\n")
def test_any_string_not_blank_validator(monkeypatch): # Empty string raises ValidationError monkeypatch.setattr("builtins.input", lambda: "") with pytest.raises(ValidationError): validate_input(STR_NOT_EMPTY) == ValidationError( "Input here cannot be empty") # None raises ValidationError monkeypatch.setattr("builtins.input", lambda: None) with pytest.raises(ValidationError): validate_input(STR_NOT_EMPTY) == ValidationError( "Input here cannot be empty") # Valid string passes monkeypatch.setattr("builtins.input", lambda: "Valid Text") assert validate_input(STR_NOT_EMPTY) == "Valid Text"
def test_string_can_be_cast_to_int(monkeypatch): # non int-castable string raises ValidationError monkeypatch.setattr("builtins.input", lambda: "X") with pytest.raises(ValidationError): validate_input(STR_TO_INT) == ValidationError( "Input here must be a number") # int string passes monkeypatch.setattr("builtins.input", lambda: "10") validate_input(STR_TO_INT) == "10"
def test_any_string_parsable_by_dateutil(monkeypatch): # non-date raises ValidationError monkeypatch.setattr("builtins.input", lambda: "NON-DATE STR") with pytest.raises(ValidationError): validate_input(PARSABLE_DATE) == ValidationError( "Expected format: a date (e.g. 2019-01-01, tomorrow 10am, " "2nd Jan, Jan 4th, etc) or valid time if today. " "(Ctrl-C to exit)\n") # date string passes monkeypatch.setattr("builtins.input", lambda: "2nd January") validate_input(PARSABLE_DATE) == "2nd January"
def test_for_valid_colour_name(monkeypatch): # non valid colour raises ValidationError monkeypatch.setattr("builtins.input", lambda: "purple") with pytest.raises(ValidationError): validate_input(VALID_COLORS) == ValidationError( "purple is not a valid color value to use here. Please " "use one of basil, peacock, grape, lavender, blueberry," "tomato, safe, flamingo or banana.") # valid colour passes monkeypatch.setattr("builtins.input", lambda: "grape") validate_input(VALID_COLORS) == "grape" # empty str passes monkeypatch.setattr("builtins.input", lambda: "") validate_input(VALID_COLORS) == ""