@@ -315,3 +315,64 @@ def test_message_sending_to_invited_with_enrolment_limit(
315315 assert emails == []
316316 assert message .recipient_count == len (mail .outbox )
317317 assert message .sent_at
318+
319+
320+ def test_message_sending_excludes_inactive_users (message ):
321+ """Inactive users (is_active=False) should not receive manual messages."""
322+ ChildWithGuardianFactory (
323+ relationship__guardian__email = "active-user@example.com" ,
324+ relationship__guardian__user__is_active = True ,
325+ )
326+ ChildWithGuardianFactory (
327+ relationship__guardian__email = "inactive-user@example.com" ,
328+ relationship__guardian__user__is_active = False ,
329+ )
330+
331+ message .send ()
332+
333+ emails = sorted (m .to for m in mail .outbox )
334+
335+ assert emails == [["active-user@example.com" ]]
336+ assert message .recipient_count == 1
337+ assert message .sent_at
338+
339+
340+ def test_message_sending_to_only_active_users (message ):
341+ """When all users are active, all should receive the message."""
342+ ChildWithGuardianFactory (
343+ relationship__guardian__email = "active-user-1@example.com" ,
344+ relationship__guardian__user__is_active = True ,
345+ )
346+ ChildWithGuardianFactory (
347+ relationship__guardian__email = "active-user-2@example.com" ,
348+ relationship__guardian__user__is_active = True ,
349+ )
350+
351+ message .send ()
352+
353+ emails = sorted (m .to for m in mail .outbox )
354+
355+ assert emails == [
356+ ["active-user-1@example.com" ],
357+ ["active-user-2@example.com" ],
358+ ]
359+ assert message .recipient_count == 2
360+ assert message .sent_at
361+
362+
363+ def test_message_sending_to_no_one_when_all_inactive (message ):
364+ """When all users are inactive, no one should receive the message."""
365+ ChildWithGuardianFactory (
366+ relationship__guardian__email = "inactive-user-1@example.com" ,
367+ relationship__guardian__user__is_active = False ,
368+ )
369+ ChildWithGuardianFactory (
370+ relationship__guardian__email = "inactive-user-2@example.com" ,
371+ relationship__guardian__user__is_active = False ,
372+ )
373+
374+ message .send ()
375+
376+ assert len (mail .outbox ) == 0
377+ assert message .recipient_count == 0
378+ assert message .sent_at
0 commit comments