Salvar nos eventos o histórico de alterações de username
#1727
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 antigousername
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
: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 emtests/integration/models/event.test.js
.E os testes mostraram que o evento do tipo
update:content:text_child
nunca era criado, mas apenas oupdate:content:text_root
no seu lugar. Então já corrigi isso.Adicionei o método
delete
aorequestBuilder
para os testes de evento de banimento.Outra mudança foi alterar
events.findAll()
paraorchestrator.getLastEvent()
, poisfindAll
era utilizado apenas nos testes, e com as modificação atuais, apenas o último evento precisa ser buscado.Por fim, adicionei
.soft
nosexpect(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 oresponseBody
normalmente ajuda mais.Tipo de mudança
Checklist: