def test_sql_sms_pillow(self, mock_do_publish): mock_do_publish.return_value = True consumer = get_test_kafka_consumer(topics.SMS) # get the seq id before the change is published kafka_seq = get_topic_offset(topics.SMS) # create an sms sms_and_dict = create_fake_sms(self.domain) self.sms = sms_and_dict.sms sms_json = self._to_json(sms_and_dict.sms_dict, self.sms) # test serialization self.assertEqual(self.sms.to_json(), sms_json) # publish the change and confirm it gets to kafka self.sms.publish_change() message = next(consumer) change_meta = change_meta_from_kafka_message(message.value) self.assertEqual(self.sms.couch_id, change_meta.document_id) self.assertEqual(self.domain, change_meta.domain) # send to elasticsearch sms_pillow = get_sql_sms_pillow('SqlSMSPillow') sms_pillow.process_changes(since=kafka_seq, forever=False) self.elasticsearch.indices.refresh(SMS_INDEX_INFO.index) # confirm change made it to elasticserach results = SMSES().run() self.assertEqual(1, results.total) sms_doc = results.hits[0] self.assertEqual(sms_doc, sms_json)
def test_sms_null_date_modified(self): sms, _ = create_fake_sms(self.domain, randomize=False) # set date to None to simulate legacy data SMS.objects.filter(id=sms.id).update(date_modified=None) sms = SMS.objects.get(id=sms.id) self.assertIsNone(sms.date_modified) response = self._auth_get_resource(self.list_endpoint) self.assertEqual(response.status_code, 200, response.content) data = json.loads(response.content)['objects'] self.assertEqual(1, len(data)) result = data[0] self.assertEqual(_serialized_messaging_event(sms), result)
def _create_sms_messages(self, count, randomize, domain=None): domain = domain or self.domain.name for i in range(count): create_fake_sms(domain, randomize=randomize)
def handle(self, domain, num_messages, **kwargs): for i in range(num_messages): create_fake_sms(domain, randomize=True) print(f'successfully created {num_messages} messages in {domain}')
def _create_sms_messages(domain, count, randomize): results = [] for i in range(count): sms, _ = create_fake_sms(domain, randomize=randomize) results.append(sms) return results