diff --git a/internal/models/vote.go b/internal/models/vote.go index 7aedbdb95aa7b8f59a5f21acf67c5a42798f80bc..32a0fd6d345d747fd18d9e2fc4d18ee2c2e5cfb5 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 3d7a43a6907e026cbf45d3eb588c0997e226f747..2d3d47c985699f2b24197f306eb4f7b8275111ff 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`)