def test_getState_noItems(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") room.items = {} h.rooms = {1: room, 2: room} self.assertEqual(h.getState(), {'states': []})
def test_getState_noItems(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") room.items = {} h.rooms = {1: room, 2 : room} self.assertEqual(h.getState(), {'states' : []})
def test_deleteRoom(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") h.rooms = {1: room} h.deleteRoom(1) self.assertRaises(KeyError, lambda: h.rooms[1])
def test_executeMethod_itemDoesNotExist(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") room.items = {} h.rooms = {1: room} self.assertRaises(KeyError, h.executeMethod, 1, 1, "getState")
def test_addRoom(self): db = MockDatabase() h = House(db) h.addRoom("lounge") self.assertEqual(h.rooms[db.room.i].id, db.room.entries[db.room.i].id) self.assertEqual(h.rooms[db.room.i].name, db.room.entries[db.room.i].name)
def test_updateRoom(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") h.rooms = {1: room} h.updateRoom(1, "new name") self.assertEqual(h.rooms[1].name, "new name")
def test_executeMethod_methodDoesNotExist(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} self.assertRaises(AttributeError, h.executeMethod, 1, 1, "open")
def test_getState(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room, 2 : room} self.assertEqual(h.getState(), {'states' : [{"id" : 1, "state" : 1}, {"id" : 1, "state" : 1} ]})
def test_executeMethod(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} self.assertEqual(h.executeMethod(1, 1, "getState"), 1)
def test_getRoomByItemId(self): db = MockDatabase() h = House(db) roomId = h.addRoom("lounge") id = 0 itemId = h.addItem(id, "sensor", "mock", "motionSensor", "0.0.0.0") room = h.getRoomByItemId(itemId) self.assertEqual(room.name, "lounge") self.assertEqual(room.id, roomId)
def test_updateItem_wrongItemId(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} self.assertRaises(KeyError, h.updateItem, 1, 2, "new name", "new brand", "lightSensor", "new ip") self.assertFalse(db.items.updateEntryCalled)
def test_deleteItem_invalidItemId(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} self.assertRaises(KeyError, h.deleteItem, 1, 2) self.assertFalse(db.items.deleteEntryCalled)
def test_addItem(self): db = MockDatabase() h = House(db) h.addRoom("lounge") h.addItem(0, "sensor", "mock", "motionSensor", "0.0.0.0") self.assertEqual(h.rooms[db.room.i].items[MockItemsTable.i]._id, db.items.entries[MockItemsTable.i]._id) self.assertEqual(h.rooms[db.room.i].items[MockItemsTable.i].name, db.items.entries[MockItemsTable.i].name) self.assertEqual(h.rooms[db.room.i].items[MockItemsTable.i]._type, "motionSensor") self.assertEqual(h.rooms[db.room.i].items[MockItemsTable.i].brand, db.items.entries[MockItemsTable.i].brand) self.assertEqual(h.rooms[db.room.i].items[MockItemsTable.i].ip, db.items.entries[MockItemsTable.i].ip)
def test_deleteItem(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} h.deleteItem(1, 1) self.assertRaises(KeyError, lambda: h.rooms[1].items[1]) self.assertTrue(db.items.deleteEntryCalled)
def test_getHouseStructure(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") h.rooms = {1: room} self.assertEqual(h.getStructure(), {'rooms': [{ 'id': 1, 'name': "lounge", 'items': [] }]})
def test_getItemById(self): db = MockDatabase() h = House(db) h.addRoom("lounge") id = 0 itemId = h.addItem(id, "sensor", "mock", "motionSensor", "0.0.0.0") item = h.getItemById(itemId) self.assertEqual(item.name, "sensor") self.assertEqual(item._type, "motionSensor") self.assertEqual(item._id, itemId) self.assertEqual(item.ip, "0.0.0.0") self.assertEqual(item.brand, "mock")
def test_updateItem(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room} h.updateItem(1, 1, "new name", "new brand", "lightSensor", "new ip") self.assertEqual(room.items[1].name, "new name") self.assertEqual(room.items[1].brand, "new brand") self.assertEqual(room.items[1]._type, "lightSensor") self.assertEqual(room.items[1].ip, "new ip") self.assertTrue(db.items.updateEntryCalled)
def test_stateChangesTriggered(self): db = MockDB() house = House(db) item = Openable(1, "item1", "mock", "door", "192.168.0.100", house.listenerManager) item.stateChanged = MethCallLogger(item.stateChanged) room = MockRoom(1, "lounge") room.items = {1: item} house.rooms = {1: room} item.close() # Sleep for 3 seconds to give the thread a chance to call checkForStateChange() time.sleep(3) self.assertTrue(item.stateChanged.was_called)
def test_getState(self): db = MockDatabase() h = House(db) item1 = MockItem(1, "mockName", "mockBrand", "motionSensor", "mockIP") room = MockRoom(1, "lounge") room.items = {1: item1} h.rooms = {1: room, 2: room} self.assertEqual( h.getState(), {'states': [{ "id": 1, "state": 1 }, { "id": 1, "state": 1 }]})
def test_getVersion(self): tupleDB = (('motionSensor', 'getState'), ('light', 'on'), ('light', 'off'), ('light', 'getState')) db = MockDatabase(tupleDB) h = House(db) self.assertEqual( h.getVersion(), { 'supportedTypes': { 'motionSensor': { 'states': [{ 'id': 1, 'name': 'motion detected' }, { 'id': 0, 'name': 'no motion' }], 'supportedBrands': ['mock', 'arduino'], 'name': 'Motion Sensor', 'isPassive': True, 'methods': ['getState'] }, 'light': { 'states': [{ 'method': 'on', 'id': 1, 'name': 'on' }, { 'method': 'off', 'id': 0, 'name': 'off' }], 'supportedBrands': ['mock', 'lightwaveRF'], 'name': 'Light', 'isPassive': False, 'methods': ['on', 'off', 'getState'] } } })
def test_getHouseStructure(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") h.rooms = {1: room} self.assertEqual(h.getStructure(), {'rooms': [{'id': 1, 'name': "lounge", 'items': []}]})
def test_deleteRoom_idNotInDict(self): db = MockDatabase() h = House(db) room = MockRoom(1, "lounge") h.rooms = {1: room} self.assertRaises(KeyError, h.deleteRoom, 2)
def test_deleteRoom_emptyList(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertRaises(KeyError, h.deleteRoom, 1)
def test_getVersionEmpty(self): tupleDB = () db = MockDatabase(tupleDB) h = House(db) self.assertEqual(h.getVersion(), {'supportedTypes': {}})
def test_getHouseStructure_emptylist(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertEqual(h.getStructure(), {'rooms': []})
def test_deleteItem_emptyList(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertRaises(KeyError, h.deleteItem, 1, 1) self.assertFalse(db.items.deleteEntryCalled)
def test_initFromDatabase(self): db = MockDatabase() h = House(db) h.initFromDatabase() self.assertEqual(h.rooms[1].name, "lounge") self.assertEqual(h.rooms[1].id, 1)
def test_executeMethod_roomDoesNotExist(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertRaises(KeyError, h.executeMethod, 1, 1, "getState")
def test_getState_noRooms(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertEqual(h.getState(), {'states' : []})
def test_getVersion(self): tupleDB = (('motionSensor', 'getState'), ('light', 'on'), ('light', 'off'), ('light', 'getState')) db = MockDatabase(tupleDB) h = House(db) self.assertEqual(h.getVersion(), {'supportedTypes': {'motionSensor': {'states': [{'id': 1, 'name': 'motion detected'}, {'id': 0, 'name': 'no motion'}], 'supportedBrands': ['mock', 'arduino'], 'name': 'Motion Sensor', 'isPassive': True, 'methods': ['getState']}, 'light': {'states': [{'method': 'on', 'id': 1, 'name': 'on'}, {'method': 'off', 'id': 0, 'name': 'off'}], 'supportedBrands': ['mock', 'lightwaveRF'], 'name': 'Light', 'isPassive': False, 'methods': ['on', 'off', 'getState']}}})
def test_getVersionEmpty(self): tupleDB = () db = MockDatabase(tupleDB) h = House(db) self.assertEqual(h.getVersion(), {'supportedTypes' : {}})
def test_getState_noRooms(self): db = MockDatabase() h = House(db) h.rooms = {} self.assertEqual(h.getState(), {'states': []})
def test_init(self): db = MockDatabase() h = House(db) self.assertEqual({}, h.rooms) self.assertEqual(db, h.database)