Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Salvar nos eventos o histórico de alterações de username #1727

Merged
merged 2 commits into from
Jun 20, 2024

Conversation

aprendendofelipe
Copy link
Collaborator

Estudando as possibilidades para revalidar as páginas estáticas sob demanda para diminuir a utilização do cache da Vercel (#1724 (comment)), optei por usar os eventos para analisar o que precisa ser revalidado. Usar os eventos facilita se um dia quisermos criar uma fila ou levar o processo de revalidação para outro servidor que monitora e reage de acordo com os eventos.

Para revalidar as páginas antigas e retornar 404 quando um usuário alterar seu username, precisamos guardar o antigo username no evento. Precisamos atualizar os antigos para 404, pois se deixar os dados antigos em cache, eles não vão ser consistentes com as novas mudanças nos conteúdos, como votos, comentários e qualquer outra modificação que só vai afetar o endereço novo.

Mudanças realizadas

Com isso em mente, adicionei os metadados nos eventos de alteração do username:

metadata.username = {
  old: originalUser.username,
  new: updatedUser.username,
};

Ao adicionar testes para a modificação, notei que nem todos os tipos de eventos possuíam testes, então já criei para todos.

Movi os poucos que existiam em tests/integration/api/v1/events/get.test.js para junto dos novos que criei em tests/integration/models/event.test.js.

E os testes mostraram que o evento do tipo update:content:text_child nunca era criado, mas apenas o update:content:text_root no seu lugar. Então já corrigi isso.

Adicionei o método delete ao requestBuilder para os testes de evento de banimento.

Outra mudança foi alterar events.findAll() para orchestrator.getLastEvent(), pois findAll era utilizado apenas nos testes, e com as modificação atuais, apenas o último evento precisa ser buscado.

Por fim, adicionei .soft nos expect(responde.status) para o teste poder continuar mesmo se receber um status incorreto. Assim aumenta as chances de termos uma mensagem de erro com mais detalhes do porque o teste falhou, já que olhar para o responseBody normalmente ajuda mais.

Tipo de mudança

  • Correção de bug
  • Nova funcionalidade

Checklist:

  • As modificações não geram novos logs de erro ou aviso (warning).
  • Eu adicionei testes que provam que a correção ou novo recurso funciona conforme esperado.
  • Tanto os novos testes quanto os antigos estão passando localmente.

Copy link

vercel bot commented Jun 19, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
tabnews ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 20, 2024 10:02pm

Rafatcb
Rafatcb previously approved these changes Jun 19, 2024
Copy link
Collaborator

@Rafatcb Rafatcb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Boa ideia em criar um arquivo separado para os testes de evento 👍

This commit updates the `patchHandler` function in the `/api/v1/contents/[username]/[slug]`.
It changes the check for `unfilteredBodyValues.parent_id` to `contentToBeUpdated.parent_id`.
This modification ensures that the user has the correct permission to edit content.
@Rafatcb Rafatcb added the back Envolve modificações no backend label Jun 20, 2024
@aprendendofelipe aprendendofelipe merged commit 1eec26d into main Jun 20, 2024
7 checks passed
@aprendendofelipe aprendendofelipe deleted the feat/save-username-changes branch June 20, 2024 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back Envolve modificações no backend
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants