def add_dxf_data(self): b = self.retrieve_test_building() if b: self.assertIsNotNone(b) floor_mock = MagicMock() floor_mock.to_serializable = MagicMock(return_value={ "b_id": "123", "f_id": "-05", "rooms": [] }) self.dxf_updater.save_floor( b, floor_mock ) self.validate_single_document(["dxf", "edilizia"]) else: b = Building( {"_id" : self.db_building["dxf"]["l_b_id"] }) b.attr("dxf", { "floors": self.db_building["dxf"]["floors"] }) b.save()
def test_b_id_to_l_b_id_resolution_case_2(self): """Caso 1 - Dati inseriti nell'ordine DXF(l_b_id) -> Easyroom -> Edilizia""" # A) self.add_dxf_data() self.add_easy_data() # Adesso devono esistere DUE documenti relativi allo stesso building, # uno con l_b_id e un altro con b_id b1 = Building.find(self.db_building["easyroom"]["b_id"]) b2 = Building.find(self.db_building["dxf"]["l_b_id"]) self.assertTrue(b1 and b2) self.assertTrue(b1.has_attr("easyroom")) self.assertTrue(b2.has_attr("dxf")) # B) self.add_edil_data() self.validate_single_document()
def retrieve_test_building(self): b = Building.find( self.db_building["_id"] ) if not b: return None if "dxf" in b and "floors" in b["dxf"]: for f in b["dxf"]["floors"]: if "updated_at" in f: del f["updated_at"] return b
def addBuildingToQueue(self, queue, bname): if not self.checkLogin(): return if queue not in ['build', 'level']: self.stderr('Unknown action: ' + queue) # The building type has to exist in order to be built, obviously if not Building.buildings.has_key(bname): self.stderr('Unknown Building Type') else: # Update the user's resouces & clear the building queue if # it has finished self.user.updateValues() level = 1 if queue == 'level': level = int(getattr(self.user, bname + 'Lvl')) + 1 cost = Building.levelUpCost(bname, level) # You need to pay for what you build! if self.user.gold < cost['cost']['gold'] \ or self.user.wood < cost['cost']['wood'] \ or self.user.stone < cost['cost']['stone'] \ or self.user.food < cost['cost']['food']: self.stderr('Not enough resources!') # All checks successful, take the resources from the user # and put this into the building queue else: self.user.gold -= cost['cost']['gold'] self.user.wood -= cost['cost']['wood'] self.user.stone -= cost['cost']['stone'] # Special case # There's a chance mines will infact be Gold Mines :) if queue == 'build' and bname == 'mine': chance = Building.buildings['mine']['goldMineChance'] if random.randrange(0, 99) < chance: bname = 'goldMine' queueO = Queue() queueO.queueType = queue queueO.name = bname self.user.addQueue(queueO, cost['time']) queueO.put() self.json['status'] = 'Started' self.json['queue'] = queueO.toDict() self.user.put()
def validate_single_document(self, namespaces=None): """Valida che ci sia un documento che contiene tutte le info""" b = self.retrieve_test_building() if namespaces is None or ("edilizia" in namespaces): self.assertTrue( b.has_attr("edilizia") ) self.assertEqual( b.attr("edilizia")["l_b_id"], "5703" ) if namespaces is None or ("dxf" in namespaces): self.assertEqual(b.attr("dxf")["floors"], self.db_building["dxf"]["floors"]) self.assertEqual( b.attr("dxf")["floors"][0]["f_id"], "-05" ) if namespaces is None or ("easyroom" in namespaces): self.assertTrue( b.has_attr("easyroom") ) self.assertEqual( b.attr("easyroom")["address"], "Via Celoria" ) # Non dev'esserci un documento con legacy building id self.assertIsNone( Building.find(self.db_building["dxf"]["l_b_id"]) )
def retrieve_test_building(self): b = Building.find( "21030" ) return b