def test_handle_digital_twin_save_event_fake(self, mock_mongo, mock_skip): mock_mongo.return_value = None mock_skip.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) msg = ObserverMessage("digital_twin", [], subject="fake subject") db_handler.handle_digital_twin(msg) self.assertTrue(mock_skip.called)
def test_handle_digital_twin_fetch_event(self, mock_mongo, mock_fetch_dt): mock_mongo.return_value = None mock_fetch_dt.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) msg = ObserverMessage("digital_twin", [], subject="fetch_digital_twin") db_handler.handle_digital_twin(msg) self.assertTrue(mock_fetch_dt.called)
def test_save_digital_twin(self, mock_mongo): mock_mongo.return_value = None twin = [{'device_name': 'test_device', 'active': False, 'location': 'on-desk', 'technology': 'WI-FI', 'battery_level': 'USB-power'}] db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) db_handler.mongo = MockMongoDeviceNameExist db_handler._save_digital_twin(twin=twin)
def test_notify(self, mock_mongo): mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) data = {'test': 123} event = 'test' msg = ObserverMessage(event=event, data=data) db_handler.notify(msg=msg) queue_item = db_handler.observer_notify_queue.get() self.assertEqual(queue_item.event, event) self.assertEqual(queue_item.data, data)
def test_fetch_digital_twin(self, mock_mongo, mock_get_doc_data, mock_adapter): mock_mongo.return_value = None mock_get_doc_data.return_value = None mock_adapter.return_value = "test" db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) emtpy_queue(queue=self.test_queue) db_handler._fetch_digital_twin() item = self.test_queue.get() correct_msg = ObserverMessage(event="digital_twin", data="test", subject="retrieved_digital_twin") correct_msg.source = "DbHandler" self.assertEqual(correct_msg, item)
def test_action_selector(self, mock_mongo): actions = {'gcp_state_changed': 'store_state_data', 'device_state_changed': 'store_state_data', 'iot_traffic': 'add_document_row', 'host_health': 'add_document_row', 'device_sensor_data': 'add_document_row', 'does_not_exist': 'action_skip'} mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) for action in actions.keys(): handler = db_handler.action_selector(event=action).__name__ self.assertEqual(handler, actions[action])
def test_add_document_row(self, mock_mongo): mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) db_handler.mongo = MockMongo db_handler.add_document_row(msg=ObserverMessage(event="pass", data=""))
def test_get_data(self, mock_mongo): mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) db_handler.mongo = MockMongo result = db_handler.get_document_data(document="abc") self.assertEqual(result, ['a', 'b'])
def test_init(self, mock_mongo): mock_mongo.return_value = None _ = DbHandler(queue=self.test_queue, thread_event=self.test_event)
def test__outbound_adapter(self): data = [{'a': 1, 'b': 1, '_id': 'something'}, {'c': 3, '_id': 'something'}] correct = [{'a': 1, 'b': 1}, {'c': 3}] result = DbHandler._outbound_adapter(data=data) self.assertEqual(result, correct)
def test_store_state_data_new(self, mock_mongo): mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) db_handler.mongo = MockMongoNoDeviceNameExist db_handler.store_state_data(msg=ObserverMessage(event="pass", data={}))
def test_action_skip(self, mock_mongo): mock_mongo.return_value = None db_handler = DbHandler(queue=self.test_queue, thread_event=self.test_event) db_handler.mongo = MockMongo db_handler.action_skip()