def test_run(self): log_string = io.BytesIO() stream_handler = logging.StreamHandler(log_string) logger.addHandler(stream_handler) bridge = EdgeDataBridge(self.config) mock_tender = {'data': test_tender_data} bridge.client.get_tender = MagicMock(return_value=mock_tender) tid = uuid.uuid4().hex t_date_modified = datetime.datetime.utcnow().isoformat() mock_tender['data']['dateModified'] = t_date_modified bridge.save_tender_in_db(tid, t_date_modified) bridge.get_teders_list = MagicMock( return_value=[[tid, datetime.datetime.utcnow().isoformat()]]) bridge.run() x = log_string.getvalue().split('\n') self.assertEqual(x[2], 'Start Edge Bridge') self.assertEqual(x[3], 'Start data sync...') del_tender = bridge.db.get(tid) bridge.db.delete(del_tender) logger.removeHandler(stream_handler) log_string.close()
def test_save_tender_in_db(self): log_string = io.BytesIO() stream_handler = logging.StreamHandler(log_string) logger.addHandler(stream_handler) bridge = EdgeDataBridge(self.config) mock_tender = {'data': test_tender_data} bridge.client.get_tender = MagicMock(return_value=mock_tender) # Save tender tid = uuid.uuid4().hex t_date_modified = datetime.datetime.utcnow().isoformat() mock_tender['data']['dateModified'] = t_date_modified bridge.save_tender_in_db(tid, t_date_modified) x = log_string.getvalue().split('\n') self.assertEqual(x[1].strip(), 'Save tender ' + tid) tender_in_db = bridge.db.get(tid) self.assertEqual(tender_in_db.id, tid) # Tender exist in db and not modified result = bridge.save_tender_in_db(tid, t_date_modified) self.assertEqual(result, None) # Update tender t_date_modified = datetime.datetime.utcnow().isoformat() mock_tender['data']['dateModified'] = t_date_modified bridge.save_tender_in_db(tid, t_date_modified) x = log_string.getvalue().split('\n') self.assertEqual(x[2].strip(), 'Update tender ' + tid) updated_tender = bridge.db.get(tid) self.assertEqual(updated_tender['dateModified'], unicode(t_date_modified)) # Tender not found bridge.client.get_tender = MagicMock(return_value=test_tender_data) bridge.save_tender_in_db(tid, datetime.datetime.utcnow().isoformat()) x = log_string.getvalue().split('\n') self.assertEqual(x[3].strip(), 'Tender ' + tid + ' not found') bridge.db.delete(updated_tender) # Saving tender with exception bridge.client.get_tender = MagicMock(return_value=mock_tender) bridge.config['main']['couch_url'] = '' bridge.config['main']['public_db'] = '' bridge.db = Database('bridge.couch_url', session=Session(retry_delays=range(10))) new_mock_tender = mock_tender new_mock_tender['dateModified'] = datetime.datetime.utcnow().isoformat( ) new_mock_tender['_rev'] = '2-' + uuid.uuid4().hex bridge.db.get = MagicMock(return_value=new_mock_tender) tid = uuid.uuid4().hex bridge.save_tender_in_db(tid, datetime.datetime.utcnow().isoformat()) x = log_string.getvalue().split('\n') self.assertEqual( x[5].strip(), 'Saving tender ' + tid + ' fail with error (400, (u\'illegal_database_name\', u"Name: \'bridge.couch_url\'. Only lowercase characters (a-z), digits (0-9), and any of the characters _, $, (, ), +, -, and / are allowed. Must begin with a letter."))' ) logger.removeHandler(stream_handler) log_string.close()