def test_add_task_status_request_invalid_data():
    request = AddTaskStatusRequest(name=5)

    assert request.name == 5
    assert not request.is_valid()
    assert any([
        e.parameter == 'name' and e.message == 'expected string, got int(5)'
        for e in request.errors
    ])
def test_add_task_status_request_name_is_empty_string():
    name = ''
    request = AddTaskStatusRequest(name)

    assert request.name == name
    assert not request.is_valid()
    assert any([
        e.parameter == 'name' and e.message == 'is required'
        for e in request.errors
    ])
Example #3
0
def add_task_status():
    data = http_request.get_json()
    request = AddTaskStatusRequest(**data)
    action = AddTaskStatusAction(task_statuses_repository)
    action.add_before_execution_hook(authorization_manager.authorize)
    response = action.execute(request)
    status = get_status(response)

    return json_response(response.value, TaskStatusEncoder, status)
def test_add_task_status_action():
    status_name = 'new'
    statuses_repo = mock.Mock()
    statuses_repo.save.return_value = mock.Mock()
    request = AddTaskStatusRequest(name=status_name)

    action = AddTaskStatusAction(statuses_repo)
    response = action.execute(request)

    assert bool(response) is True
    assert statuses_repo.save.called
    assert response.value == statuses_repo.save.return_value
def test_add_task_status_action_handles_bad_request():
    status_name = None
    statuses_repo = mock.Mock()

    request = AddTaskStatusRequest(name=status_name)
    action = AddTaskStatusAction(statuses_repo)
    response = action.execute(request)

    assert bool(response) is False
    assert not statuses_repo.save.called
    assert response.value == {
        'type': ResponseFailure.PARAMETER_ERROR,
        'message': 'name: is required'
    }
def test_add_task_status_action_handles_generic_error():
    error_message = 'error'
    status_name = new_status_name
    statuses_repo = mock.Mock()
    statuses_repo.save.side_effect = Exception(error_message)

    request = AddTaskStatusRequest(name=status_name)
    action = AddTaskStatusAction(statuses_repo)
    response = action.execute(request)

    assert bool(response) is False
    assert statuses_repo.save.called
    assert response.value == {
        'type': ResponseFailure.SYSTEM_ERROR,
        'message': 'Exception: {}'.format(error_message)
    }
def test_add_task_status_action_with_hooks():
    status_name = 'new'
    statuses_repo = mock.Mock()
    statuses_repo.save.return_value = mock.Mock()
    request = AddTaskStatusRequest(name=status_name)

    action = AddTaskStatusAction(statuses_repo)

    before = mock.MagicMock()
    after = mock.MagicMock()

    action.add_before_execution_hook(before)
    action.add_after_execution_hook(after)

    response = action.execute(request)

    assert before.called
    assert after.called

    assert bool(response) is True
    assert statuses_repo.save.called
    assert response.value == statuses_repo.save.return_value
def test_add_task_status_request_init():
    request = AddTaskStatusRequest(name=new_status_name)

    assert request.name == new_status_name
    assert request.is_valid()
def test_add_task_status_request_without_data():
    with pytest.raises(Exception):
        AddTaskStatusRequest()