Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/test-cases.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Legenda:
| TC-011 | Remoção | Tentar remover booking sem token de autenticação | Negativo | Alta | Automatizado | [delete_booking.feature:9](../features/delete_booking.feature#L9) |
| TC-012 | Atualização | Tentar atualizar parcialmente booking sem token (PATCH) | Negativo | Alta | Automatizado | [update_booking.feature:36](../features/update_booking.feature#L36) |
| TC-013 | Atualização | Tentar atualizar booking com token inválido (PUT) | Negativo | Alta | Automatizado | [update_booking.feature:17](../features/update_booking.feature#L17) |
| TC-014 | Remoção | Tentar remover um booking que não existe | Negativo | Baixa | Automatizado | [delete_booking.feature:16](../features/delete_booking.feature#L16) |

`BookingApiClient.get_booking_ids` também aceita filtro por `checkin`/`checkout`, mas o TC-006 cobre só `firstname`/`lastname`: o filtro por data na API pública de demonstração é conhecido por ser instável, e testá-lo arriscaria um teste flaky em vez de validar um comportamento real.

Expand Down
9 changes: 9 additions & 0 deletions features/delete_booking.feature
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,12 @@ Feature: Remoção de booking
And que ele não possui nenhum token de autenticação
When ele tenta remover o booking
Then a resposta deve indicar acesso não autorizado

# Comportamento observado na API pública: remover um id que nunca existiu
# retorna 405 (Method Not Allowed), não 404 como seria de se esperar.
# Documentado como comportamento real da API, não como bug da automação.
@TC-014
Scenario: Tentar remover um booking que não existe
Given que ele possui um token de autenticação válido
When ele tenta remover o booking pelo id "999999999"
Then a resposta deve indicar que o método não é permitido
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ markers = [
"TC-011: id do test case, ver docs/test-cases.md",
"TC-012: id do test case, ver docs/test-cases.md",
"TC-013: id do test case, ver docs/test-cases.md",
"TC-014: id do test case, ver docs/test-cases.md",
]

[tool.ruff]
Expand Down
11 changes: 11 additions & 0 deletions steps/test_booking_steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,18 @@ def tenta_remover_o_booking(context: Context) -> None:
context.last_response = context.booking_client.delete_booking(context.booking_id, context.token or "")


@when(parsers.parse('ele tenta remover o booking pelo id "{booking_id}"'))
def tenta_remover_o_booking_pelo_id_informado(context: Context, booking_id: str) -> None:
context.last_response = context.booking_client.delete_booking(int(booking_id), context.token or "")


@then("o booking deve ser removido com sucesso")
def booking_deve_ser_removido_com_sucesso(context: Context) -> None:
assert context.last_response is not None
assert context.last_response.status_code == 201


@then("a resposta deve indicar que o método não é permitido")
def resposta_indica_metodo_nao_permitido(context: Context) -> None:
assert context.last_response is not None
assert context.last_response.status_code == 405
Loading