def test_all_recipients(self): # totally fake Event and SelfOrganisedSubmission e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="self-organized"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), country="GB", ) e.tags.set(Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"])) r = SelfOrganisedSubmission.objects.create( state="p", personal="Harry", family="Potter", email="*****@*****.**", institution_other_name="Hogwarts", workshop_url="", workshop_format="", workshop_format_other="", workshop_types_other_explain="", language=Language.objects.get(name="English"), event=e, additional_contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]), ) r.workshop_types.set(Curriculum.objects.filter(carpentry="LC")) a = SelfOrganisedRequestAction( trigger=Trigger(action="test-action", template=EmailTemplate()), objects=dict(event=e, request=r), ) self.assertEqual( a.all_recipients(), "[email protected], [email protected], [email protected]" )
def test_all_recipients(self): # totally fake Event e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="carpentries.org"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]), country="GB", ) e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"])) # tasks Task.objects.create(person=self.person1, role=self.host, event=e) Task.objects.create( person=self.person2, role=self.instructor, event=e, ) Task.objects.create( person=self.person3, role=self.instructor, event=e, ) a = InstructorsHostIntroductionAction( trigger=Trigger(action="test-action", template=EmailTemplate()), objects=dict(event=e), ) self.assertEqual( a.all_recipients(), "[email protected], [email protected], [email protected], [email protected], [email protected]", )
def testContext(self): """Make sure `get_additional_context` works correctly.""" a = SelfOrganisedRequestAction( trigger=Trigger(action="test-action", template=EmailTemplate())) # method fails when obligatory objects are missing with self.assertRaises(KeyError): a.get_additional_context(dict()) # missing 'event' and 'request' with self.assertRaises(AttributeError): # now both objects are present, but the method tries to execute # `refresh_from_db` on them a.get_additional_context(dict(event="dummy", request="dummy")) # totally fake Event and SelfOrganisedSubmission e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="self-organized"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), country="GB", ) e.tags.set( Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"])) r = SelfOrganisedSubmission.objects.create( state="p", personal="Harry", family="Potter", email="*****@*****.**", institution_other_name="Hogwarts", workshop_url="", workshop_format="", workshop_format_other="", workshop_types_other_explain="", language=Language.objects.get(name="English"), event=e, additional_contact=TAG_SEPARATOR.join( ["*****@*****.**", "*****@*****.**"]), ) r.workshop_types.set(Curriculum.objects.filter(carpentry="LC")) ctx = a.get_additional_context(objects=dict(event=e, request=r)) self.maxDiff = None self.assertEqual( ctx, dict( workshop=e, request=r, workshop_main_type="LC", dates=e.human_readable_date, host=Organization.objects.first(), regional_coordinator_email=["*****@*****.**"], short_notice=True, all_emails=[ "*****@*****.**", "*****@*****.**", "*****@*****.**" ], assignee="Regional Coordinator", tags=["automated-email", "Circuits", "LC"], ), )
def testRecipients(self): """Make sure InstructorsHostIntroductionAction correctly renders recipients. They should get overwritten by InstructorsHostIntroductionAction during email building.""" # totally fake Event e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="carpentries.org"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]), country="GB", ) e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"])) # tasks Task.objects.create(person=self.person1, role=self.host, event=e) Task.objects.create( person=self.person2, role=self.instructor, event=e, ) Task.objects.create( person=self.person3, role=self.instructor, event=e, ) template = EmailTemplate.objects.create( slug="sample-template", subject="Welcome to {{ site.name }}", to_header="*****@*****.**", from_header="*****@*****.**", cc_header="*****@*****.**", bcc_header="*****@*****.**", reply_to_header="{{ reply_to }}", body_template="Sample text.", ) trigger = Trigger.objects.create( action="self-organised-request-form", template=template, ) a = InstructorsHostIntroductionAction( trigger=trigger, objects=dict(event=e), ) email = a._email() self.assertEqual( email.to, [ "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ], )
def testRecipients(self): """Make sure SelfOrganisedRequestAction correctly renders recipients. They should get overwritten by SelfOrganisedRequestAction during email building.""" # totally fake Event and SelfOrganisedSubmission e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="self-organized"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), country="GB", ) e.tags.set( Tag.objects.filter(name__in=["LC", "Circuits", "automated-email"])) r = SelfOrganisedSubmission.objects.create( state="p", personal="Harry", family="Potter", email="*****@*****.**", institution_other_name="Hogwarts", workshop_url="", workshop_format="", workshop_format_other="", workshop_types_other_explain="", language=Language.objects.get(name="English"), event=e, additional_contact=TAG_SEPARATOR.join( ["*****@*****.**", "*****@*****.**"]), ) r.workshop_types.set(Curriculum.objects.filter(carpentry="LC")) template = EmailTemplate.objects.create( slug="sample-template", subject="Welcome to {{ site.name }}", to_header="*****@*****.**", from_header="*****@*****.**", cc_header="*****@*****.**", bcc_header="*****@*****.**", reply_to_header="{{ reply_to }}", body_template="Sample text.", ) trigger = Trigger.objects.create( action="self-organised-request-form", template=template, ) a = SelfOrganisedRequestAction( trigger=trigger, objects=dict(event=e, request=r), ) email = a._email() self.assertEqual(email.to, ["*****@*****.**", "*****@*****.**", "*****@*****.**"])
def testContext(self): """Make sure `get_additional_context` works correctly.""" a = InstructorsHostIntroductionAction( trigger=Trigger(action="test-action", template=EmailTemplate())) # method fails when obligatory objects are missing with self.assertRaises(KeyError): a.get_additional_context(dict()) # missing 'event' with self.assertRaises(AttributeError): # now event is present, but the method tries to execute `refresh_from_db` # on it a.get_additional_context(dict(event="dummy")) # totally fake Event e = Event.objects.create( slug="test-event", host=Organization.objects.first(), administrator=Organization.objects.get(domain="carpentries.org"), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), contact=TAG_SEPARATOR.join(["*****@*****.**", "*****@*****.**"]), country="GB", ) e.tags.set(Tag.objects.filter(name__in=["LC", "automated-email"])) # tasks host = Task.objects.create(person=self.person1, role=self.host, event=e) instructor1 = Task.objects.create( person=self.person2, role=self.instructor, event=e, ) instructor2 = Task.objects.create( person=self.person3, role=self.instructor, event=e, ) supporting_instructor1 = Task.objects.create( person=self.person4, role=self.supporting_instructor, event=e, ) supporting_instructor2 = Task.objects.create( person=self.person5, role=self.supporting_instructor, event=e, ) ctx = a.get_additional_context(objects=dict(event=e)) self.maxDiff = None expected = dict( workshop=e, workshop_main_type="LC", dates=e.human_readable_date, workshop_host=Organization.objects.first(), regional_coordinator_email=["*****@*****.**"], host=host.person, instructors=[instructor1.person, instructor2.person], instructor1=instructor1.person, instructor2=instructor2.person, supporting_instructors=[ supporting_instructor1.person, supporting_instructor2.person, ], supporting_instructor1=supporting_instructor1.person, supporting_instructor2=supporting_instructor2.person, hosts=[host.person], all_emails=[ "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ], assignee="Regional Coordinator", tags=["automated-email", "LC"], ) self.assertEqual(ctx, expected)
def testContext(self): """Make sure `get_additional_context` works correctly.""" a = PostWorkshopAction( trigger=Trigger(action="test-action", template=EmailTemplate())) # method fails when obligatory objects are missing with self.assertRaises(KeyError): a.get_additional_context(dict()) # missing 'event' with self.assertRaises(AttributeError): # now both objects are present, but the method tries to execute # `refresh_from_db` on them a.get_additional_context(dict(event="dummy", task="dummy")) e = Event.objects.create( slug="test-event", host=Organization.objects.first(), start=date.today() + timedelta(days=7), end=date.today() + timedelta(days=8), country="GB", venue="Ministry of Magic", # additionally testing the empty email contact=TAG_SEPARATOR.join(["*****@*****.**", ""])) e.tags.set(Tag.objects.filter(name__in=["TTT", "SWC"])) p1 = Person.objects.create(personal="Harry", family="Potter", username="******", email="*****@*****.**") p2 = Person.objects.create( personal="Hermione", family="Granger", username="******", email="*****@*****.**", ) p3 = Person.objects.create(personal="Ron", family="Weasley", username="******", email="*****@*****.**") p4 = Person.objects.create(personal="Draco", family="Malfoy", username="******", email="*****@*****.**") host = Role.objects.create(name="host") instructor = Role.objects.create(name="instructor") helper = Role.objects.create(name="helper") supporting_instructor = Role.objects.create( name="supporting-instructor") Task.objects.bulk_create([ Task(event=e, person=p1, role=host), Task(event=e, person=p2, role=instructor), Task(event=e, person=p3, role=helper), Task(event=e, person=p1, role=helper), Task(event=e, person=p4, role=supporting_instructor), ]) ctx = a.get_additional_context(objects=dict(event=e)) self.assertEqual( ctx, dict( workshop=e, workshop_main_type="SWC", dates=e.human_readable_date, host=Organization.objects.first(), regional_coordinator_email=["*****@*****.**"], instructors=[p2], supporting_instructors=[p4], helpers=[p1, p3], all_emails=[ "*****@*****.**", "*****@*****.**", "*****@*****.**", "*****@*****.**", ], assignee="Regional Coordinator", reports_link="https://workshop-reports.carpentries.org/" "?key=e18dd84d093be5cd6c6ccaf63d38a8477ca126f4" "&slug=test-event", tags=['SWC', 'TTT'], ), )