def setUp(self): now = datetime.utcnow() self.messages = [ Message( [None, None, None, None, now.strftime("%Y-%m-%d %H:%M:%S")], None) ] self.data = [1, 'foo', 'bar', now, now, self.messages]
def map(data, aircraft, client): flight = data['flight'] txt = data['text'] created_at = datetime.utcfromtimestamp(data['timestamp']).strftime('%Y-%m-%d %H:%M:%S') msg = Message([None, aircraft.id, flight, txt, created_at, client.id], client) return msg
def test_map_returns_message_when_all_fields_exist(self): datetime_expected = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') message_expected = Message([ None, self.aircraft.id, self.data['flight'], self.data['text'], datetime_expected, self.client.id ], self.client) message_actual = self.mapper.map(self.data, self.aircraft, self.client) self.assertEqual(str(message_expected), str(message_actual))
def test_init_fills_properties(self): message = Message(self.data, self.client) self.assertEqual(self.data[0], message.id) self.assertEqual(self.data[1], message.aircraft_id) self.assertEqual(self.data[2], message.flight) self.assertEqual(self.data[3], message.txt) self.assertEqual(datetime.strptime(self.data[4], '%Y-%m-%d %H:%M:%S'), message.created_at) self.assertEqual(self.client, message.client)
def test_fetch_by_returns_messages_when_exist(self): seen_datetime = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') aircraft = mock.MagicMock() aircraft.id = 1 client = mock.MagicMock() client.id = 1 message = Message([None, 1, 'foo', 'bar', seen_datetime], client) message_id = self.mapper.insert(message, aircraft, client) messages = self.mapper.fetch_by('id', message_id) self.assertNotEqual([], messages)
def test_delete_does_nothing_when_message_does_not_exist(self): seen_datetime = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') aircraft = mock.MagicMock() aircraft.id = 1 client = mock.MagicMock() client.id = 1 message = Message([None, 1, 'foo', 'bar', seen_datetime], client) message_id = self.mapper.insert(message, aircraft, client) message_non_existing = mock.MagicMock() message_non_existing.id = 999 self.mapper.delete(message_non_existing) messages = self.mapper.fetch_by('id', message_id) self.assertNotEqual([], messages)
def fetch_by(self, column, value, order=None, limit=None): # default order and limit, if not set order = ('id', 'ASC') if order is None else order limit = -1 if limit is None else limit self.adapter.execute( """ SELECT id, aircraft_id, flight, txt, created_at, client_id FROM messages WHERE {} = ? ORDER BY {} {} LIMIT {} """.format(column, order[0], order[1], limit), (value, )) results = self.adapter.fetchall() # map to models messages = [] for result in results: client = ClientDbMapper(self.adapter).fetch(result[5]) msg = Message(result, client) messages.append(msg) return messages
def test_str_returns_expected_string(self): str_expected = 'Aircraft ID: {}, Flight: {}, Created At: {}, Client ID: {}'.format( self.data[1], self.data[2], self.data[4], self.client.id) message = Message(self.data, self.client) self.assertEqual(str_expected, str(message))