Estou obtendo a mensagem "WHERE conditions required" nos testes de atualização do aluno. Apesar disso, o teste passa, porém queria saber o motivo disso estar acontecendo.
Meu código está assim:
Função de teste:
func TestAtualizarAluno(t *testing.T) {
database.ConectaComBancoDeDados()
CriaAlunoMock()
defer excluiAlunoMock()
r := SetupDasRotasDeTeste()
r.PUT("/alunos/:id", controllers.EditaAluno)
url := "/alunos/" + strconv.Itoa(ID)
nomeAtualizado := "Nome atualizado"
cpfAtualizado := "55555555555"
rgAtualizado := "111111111"
aluno := models.Aluno{Nome: nomeAtualizado, Cpf: cpfAtualizado, Rg: rgAtualizado}
valorJson, _ := json.Marshal(aluno)
req, _ := http.NewRequest("PUT", url, bytes.NewBuffer(valorJson))
res := httptest.NewRecorder()
r.ServeHTTP(res, req)
var alunoMockAtualizado models.Aluno
json.Unmarshal(res.Body.Bytes(), &alunoMockAtualizado)
assert.Equal(t, nomeAtualizado, alunoMockAtualizado.Nome, "Nomes diferentes")
assert.Equal(t, rgAtualizado, alunoMockAtualizado.Rg, "Rg diferente")
assert.Equal(t, cpfAtualizado, alunoMockAtualizado.Cpf, "CPF diferente")
}
Controller de atualização:
func EditaAluno(c *gin.Context) {
var aluno models.Aluno
id := c.Params.ByName("id")
database.DB.First(&aluno, id)
if err := c.ShouldBindJSON(&aluno); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"message": err.Error()})
return
}
if err := models.ValidaDadosDeAlunos(&aluno); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"message": err.Error()})
return
}
database.DB.Model(&aluno).UpdateColumns(aluno)
c.JSON(http.StatusOK, aluno)
}