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