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
Пример #4
0
    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"]) )
Пример #6
0
 def retrieve_test_building(self):
    b = Building.find( "21030" )
    return b