RoutinelyOrganization / routinely-api

A Routinely é uma ferramenta projetada para ajudar a manter uma rotina saudável e equilibrada, permitindo ao usuário registrar suas atividades diárias, incluindo trabalho, exercícios, hobbies e tarefas domésticas.
MIT License
5 stars 2 forks source link

backend - permitir a atualização do estado #67

Open hartmannjean opened 9 months ago

hartmannjean commented 9 months ago

Alterar a tarefa para permitir a edição parcial dos campos.

viniciuscosmome commented 9 months ago

Atualizado de bug para feature porque o recurso que estava faltando já está criado, o que está faltando é o recurso de atualização de tarefa.

viniciuscosmome commented 8 months ago
viniciuscosmome commented 8 months ago

Propriedades

name:
  type: string
  details: Guarda o nome da tarefa
description:
  type: string
  details: Guarda a descrição da tarefa
date:
  type: string
  pattern: YYYY-MM-DD HH:MM
  details: Guarda data e hora da tarefa
checked:
  type: boolean
tag:
  type: string
  options:
    - application
    - account
    - exercise
    - beauty
    - literature
priority:
  type: string
  options:
    - low
    - medium
    - high
    - urgent
category:
  type: string
  options:
    - personal
    - study
    - finance
    - career
    - health
viniciuscosmome commented 8 months ago

Adicionar uma tarefa

Path: /tasks
Method: POST
Headers:
  Content-Type: application/json
  Authorization: Bearer ACCESS_TOKEN
Body:
  name: required
  description: required
  date: required
  tag: required
  priority: required
  category: required

Resposta caso sucesso

{
  "message": "Tarefa criada com sucesso!"
}
viniciuscosmome commented 8 months ago

Pegar todas as tarefas do mês e ano informados

Path: /tasks
Method: GET
Headers:
  Authorization: Bearer ACCESS_TOKEN
QueryParams:
  month: required
  year: required
Exemplo de url:
/tasks?month=1&year=2024

Resposta caso sucesso

{
  "count": 7,
  "tasks": [
    {
      "id": 8,
      "name": "Nome desta tarefa",
      "description": "Descrição da tarefa",
      "date": "2024-03-12T13:00:00.000Z",
      "tag": "exercise",
      "category": "study",
      "priority": "urgent",
      "checked": false
    },
    {
      "id": 3,
      "name": "Nome desta tarefa",
      "description": "Descrição da tarefa",
      "date": "2024-03-12T13:00:00.000Z",
      "tag": "exercise",
      "category": "study",
      "priority": "medium",
      "checked": false
    },
    ...,
  ]
}
viniciuscosmome commented 8 months ago

Pegar a tarefa com o ID informado

Path: /tasks/:id
Method: GET
Headers:
  Authorization: Bearer ACCESS_TOKEN
UrlParam:
  id: required
Exemplo de url:
/tasks/33

Resposta caso sucesso

{
  "task": {
    "id": 2,
    "name": "Nome desta tarefa",
    "description": "Descrição da tarefa",
    "date": "2024-03-12T18:42:00.000Z",
    "tag": "exercise",
    "priority": "medium",
    "category": "study",
    "checked": false
  }
}
viniciuscosmome commented 8 months ago

Editar uma tarefa

É obrigatório editar ao menos um campo!

Path: /tasks
Method: PATCH
Headers:
  Content-Type: application/json
  Authorization: Bearer ACCESS_TOKEN
Body:
  id: required
  name: optional
  description: optional
  date: optional
  tag: optional
  priority: optional
  category: optional
  checked: optional

Resposta caso sucesso

{
  "updated": true
}
viniciuscosmome commented 8 months ago

Deletar a tarefa com o ID informado

Path: /tasks/:id
Method: DELETE
Headers:
  Authorization: Bearer ACCESS_TOKEN
UrlParam:
  id: required
Exemplo de url:
/tasks/33

Resposta caso sucesso

{
  "deleted": true
}
viniciuscosmome commented 8 months ago

@RoutinelyOrganization/quality-assurance

Todas as rotas de tarefas foram atualizadas para aceitar as novas mudanças:


Antes de continuar:

  1. Sincronizar com a versão mais atual da branch develop
  2. Executar as migrações da base de dados (isso irá apagar os dados que contém muitos conflitos)
  3. iniciar a aplicação

Happy path

Todas as rotas foram alteradas.

# criar uma tarefa
# todos os campos são obrigatórios
POST /tasks
Authorization: Bearer accessToken
Content-Type: application/json

Body {
  "name": "Uma atividade normal",
  "description": "Descrição personalizada da atividade",
  "date": "2024-04-01 04:20",
  "priority": "low",
  "tag": "application",
  "category": "personal",
}
# buscar uma tarefa
GET /tasks/:id
Authorization: Bearer accessToken
# buscar muitas tarefas
GET /tasks?month=3&year=2024
Authorization: Bearer accessToken
# alterar uma tarefa
# todas as propriedades exceto o ID são opcionais
PATCH /tasks
Authorization: Bearer accessToken
Content-Type: application/json

Body {
  "id": 1,
  "name": "Uma atividade normal",
  "description": "Descrição personalizada da atividade",
  "date": "2024-04-01 04:20",
  "priority": "low",
  "tag": "application",
  "category": "personal",
  "checked": false
}
# excluir uma tarefa
DELETE /tasks/:id
Authorization: Bearer accessToken
ellensilva commented 7 months ago

@viniciuscosmome, tudo bem? Essa task está em um ambiente que eu ou a @lilianekassab conseguimos testar? Tentamos chamar o POST para criar a task e retornou um 400 informando que o campo hour é obrigatório cURL curl --location 'https://routinely-api-dev.onrender.com/tasks' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer 2a21855988562f9b453b42659f892cdf37a16677' \ --data '{ "name": "Primeiro Teste", "date": "2024-09-02", "description": "Primeiro Teste via api", "priority": "medium", "tag": "literature", "category": "personal" }' Evidencia:

Image

viniciuscosmome commented 7 months ago

@ellensilva , essa task não foi homologada. Ela está na branch develop

lilianekassab commented 7 months ago

Evidências de testes

Criando uma tarefa:

Image

Buscar tarefa:

Image

Excluir tarefa:

Image

ellensilva commented 7 months ago

Testes finalizados! Cenários testados: Obter tarefas [NO] Campo Nome maior que 50 caracteres [Yes] Campo Descrição menor que 1000 caracteres [NO] Campo Descrição maior que 1000 caracteres [NO] Data inferior que atual [NO] Data invalida [NO] Obter detalhe da tarefa inexistente [YES] Obter detalhe da tarefa existente [NO] Obter detalhe da tarefa que não é sua [YES] Obter tarefas passando Mês e ano [NO] Obter tarefas passando Mês inexistente Alterar campos nome e descrição Adicionar caracteres especiais Adiciona tag Passar somente o Id Alterar sem passar o Id [NO] Deletar task nao sua [NO] Alterar tarefas nao sua [YES] Deletar task existente Deletar task inexistente