def test_05_save_entity(self): connection = MongoDatabaseAPI("localhost", DB_NAME) connection.connect() # Given wrong record type to save self.assertRaises(BIValueError, connection.save_entity, MongoDatabaseAPI.ET_RESOURCE, "not a dict value") # Insert new record("_id" exist in incoming dictionary but not in DB) new_record = {"_id" : objectid.ObjectId("5010cb8137adc7191b000000"), "res_type" : "printer", "res_status" : "active", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1018"}} id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record) conn = Connection() result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)}) self.assertEqual(new_record, result) # Insert another new record(no "_id" key in incoming dictionary) new_record = {"res_type" : "printer", "res_status" : "active", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1018"}} id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record) conn = Connection() result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)}) self.assertEqual(new_record, result) # Update existing record(change res_status and additional_parameters:model) new_record = {"_id": id, "res_type" : "printer", "res_status" : "down", "owner" : "Priocom", "external_system" : "", "description" : "Printer in the Brannigan Team workroom", "additional_parameters" : {"Vendor" : "Canon", "model" : "iR1022"}} id = connection.save_entity(MongoDatabaseAPI.ET_RESOURCE, new_record) result = conn[DB_NAME][MongoDatabaseAPI.ET_RESOURCE].find_one({'_id': objectid.ObjectId(id)}) self.assertEqual(new_record, result) conn.disconnect() connection.close()