@@ -281,6 +281,72 @@ func TestCloseVoting(t *testing.T) {
281281 assert .Equal (t , Closed , voting .Status )
282282}
283283
284+ func TestCancelVoting (t * testing.T ) {
285+ boardId := uuid .New ()
286+ votingID := uuid .New ()
287+
288+ mockDb := NewMockVotingDatabase (t )
289+ mockDb .EXPECT ().Close (mock .Anything , DatabaseVotingUpdate {ID : votingID , Board : boardId , Status : Canceled }).
290+ Return (DatabaseVoting {ID : votingID , Board : boardId , Status : Canceled }, nil )
291+
292+ mockBroker := realtime .NewMockClient (t )
293+ mockBroker .EXPECT ().Publish (mock .Anything , mock .AnythingOfType ("string" ), mock .Anything ).Return (nil )
294+ broker := new (realtime.Broker )
295+ broker .Con = mockBroker
296+
297+ service := NewVotingService (mockDb , broker )
298+ voting , err := service .Cancel (context .Background (), votingID , boardId , nil )
299+
300+ assert .NoError (t , err )
301+ assert .NotNil (t , voting )
302+ assert .Equal (t , Canceled , voting .Status )
303+ }
304+
305+ func TestCancelVoting_NotFound (t * testing.T ) {
306+ boardId := uuid .New ()
307+ votingID := uuid .New ()
308+
309+ mockDb := NewMockVotingDatabase (t )
310+ mockDb .EXPECT ().Close (mock .Anything , DatabaseVotingUpdate {ID : votingID , Board : boardId , Status : Canceled }).
311+ Return (DatabaseVoting {}, sql .ErrNoRows )
312+
313+ mockBroker := realtime .NewMockClient (t )
314+ broker := new (realtime.Broker )
315+ broker .Con = mockBroker
316+
317+ service := NewVotingService (mockDb , broker )
318+ voting , err := service .Cancel (context .Background (), votingID , boardId , nil )
319+
320+ assert .Nil (t , voting )
321+ assert .NotNil (t , err )
322+
323+ var votingErr VotingError
324+ assert .ErrorAs (t , err , & votingErr )
325+
326+ assert .Equal (t , NotFound , votingErr .Category )
327+ }
328+
329+ func TestCancelVoting_Failed (t * testing.T ) {
330+ boardId := uuid .New ()
331+ votingID := uuid .New ()
332+ dbError := errors .New ("failed to cancel" )
333+
334+ mockDb := NewMockVotingDatabase (t )
335+ mockDb .EXPECT ().Close (mock .Anything , DatabaseVotingUpdate {ID : votingID , Board : boardId , Status : Canceled }).
336+ Return (DatabaseVoting {}, dbError )
337+
338+ mockBroker := realtime .NewMockClient (t )
339+ broker := new (realtime.Broker )
340+ broker .Con = mockBroker
341+
342+ service := NewVotingService (mockDb , broker )
343+ voting , err := service .Cancel (context .Background (), votingID , boardId , nil )
344+
345+ assert .Nil (t , voting )
346+ assert .NotNil (t , err )
347+ assert .ErrorIs (t , err , dbError )
348+ }
349+
284350func TestCloseVoting_NotFound (t * testing.T ) {
285351 boardId := uuid .New ()
286352 votingID := uuid .New ()
0 commit comments