class TestNotificationsEnabled(APITestCase): def setUp(self): self.member = UserFactory() self.group = GroupFactory(members=[self.member, ], slack_webhook='https://hooks.slack.com/services/some_webhook') self.store = StoreFactory(group=self.group, name="Elke's") self.pickup_upcoming = PickupDateFactory(store=self.store, date=timezone.now() + relativedelta(hours=1)) self.pickup_future = PickupDateFactory(store=self.store, date=timezone.now() + relativedelta(hours=12)) self.pickup_past = PickupDateFactory(store=self.store, date=timezone.now() - relativedelta(days=1)) def refresh(self): for p in ( self.pickup_upcoming, self.pickup_future, self.pickup_past ): p.refresh_from_db() @responses.activate def test_send_upcoming_notification(self): responses.add(responses.POST, 'https://hooks.slack.com/services/some_webhook', body='ok') self.group.send_notifications() self.refresh() self.assertEqual(len(responses.calls), 1) self.assertEqual( self.pickup_upcoming.notifications_sent.get('upcoming'), {'status': 200, 'data': 'ok'}, ) slack_request = parse(responses.calls[0].request.body) self.assertIn('Food pick-up in', slack_request['attachments'][0]['text']) self.assertIn("Elke's", slack_request['attachments'][0]['title']) # should not send a second notification self.group.send_notifications() self.assertEqual(len(responses.calls), 1)
class TestNotificationsDisabled(APITestCase): def setUp(self): self.member = UserFactory() self.group = GroupFactory(members=[self.member, ]) self.store = StoreFactory(group=self.group) self.pickup = PickupDateFactory(store=self.store) @responses.activate def test_send_no_upcoming_notification_if_no_webhook(self): self.group.send_notifications()