From 408fc0df9282aab057c185eac076a18e6f6570d6 Mon Sep 17 00:00:00 2001 From: Alexis POYEN <punkylibre@localhost.localdomain> Date: Wed, 17 Jun 2020 11:52:31 +0200 Subject: [PATCH] Feat : on Vote deletion DeskRound is marked as uncompleted --- internal/models/vote.go | 10 ++++++++++ internal/rootmux/rootmux_test.go | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/models/vote.go b/internal/models/vote.go index 7aedbdb..32a0fd6 100644 --- a/internal/models/vote.go +++ b/internal/models/vote.go @@ -152,6 +152,16 @@ func (d *DataHandler) deleteVote(w http.ResponseWriter, r *http.Request, id int) return } d.db.Delete(&o) + + // Set completed to false for deskRound + var deskRound DeskRound + if err := d.db.First(&deskRound, o.DeskRoundID).Error; err != nil { + http.Error(w, ErrorParentNotFound, http.StatusNotFound) + return + } + deskRound.Completed = false + d.db.Save(&deskRound) + } else { http.Error(w, ErrorIDIsMissing, http.StatusNotFound) } diff --git a/internal/rootmux/rootmux_test.go b/internal/rootmux/rootmux_test.go index 3d7a43a..2d3d47c 100644 --- a/internal/rootmux/rootmux_test.go +++ b/internal/rootmux/rootmux_test.go @@ -121,8 +121,12 @@ func appTests(t *testing.T) { do("POST", "/api/Vote", xsrfHeader, `{"DeskRoundID":1,"CandidateListID":null,"VoiceNumber":3,"Blank":true}`, 500, `Error the vote have already been captured`) do("POST", "/api/Vote", xsrfHeader, `{"DeskRoundID":1,"CandidateListID":null,"VoiceNumber":5,"NullVote":true}`, 500, `Error the vote have already been captured`) + //Check that on Vote deletion, deskRound is updated + do("DELETE", "/api/Vote/1", xsrfHeader, ``, 200, ``) + do("GET", "/api/DeskRound/1", xsrfHeader, ``, 200, `{"ID":1,"RoundID":1,"DeskID":1,"Capturers":[],"Completed":false,"DateCompletion":"20`) + // Verify that on Desk deletion deskRounds are deleted - do("GET", "/api/Desk/1", xsrfHeader, ``, 200, `{"ID":1,"SectionID":1,"Name":"Desk 1","WitnessDesk":true,"Subscribed":9587,"DeskRounds":[{"ID":1,"RoundID":1,"DeskID":1,"Capturers":null,"Completed":true,"DateCompletion":"20`) + do("GET", "/api/Desk/1", xsrfHeader, ``, 200, `{"ID":1,"SectionID":1,"Name":"Desk 1","WitnessDesk":true,"Subscribed":9587,"DeskRounds":[{"ID":1,"RoundID":1,"DeskID":1,"Capturers":null,"Completed":false,"DateCompletion":"20`) do("DELETE", "/api/Desk/1", xsrfHeader, ``, 200, ``) do("GET", "/api/DeskRound/1", xsrfHeader, ``, 404, `id is missing`) -- GitLab