/**
  * @depends testCreateAndGetGameCollectionById
  */
 public function testResolveByTypeAndPerson()
 {
     Yii::app()->user->userModel = User::getByUsername('steven');
     $gameCollection = GameCollection::resolveByTypeAndPerson('Basketball', Yii::app()->user->userModel);
     $this->assertEquals('Basketball', $gameCollection->type);
     $this->assertEquals(Yii::app()->user->userModel, $gameCollection->person);
     $this->assertEquals(array('something'), unserialize($gameCollection->serializedData));
     $gameCollection = GameCollection::resolveByTypeAndPerson('Airport', Yii::app()->user->userModel);
     $this->assertTrue($gameCollection->id < 0);
     $compareData = array('RedemptionItem' => 0, 'Items' => array('Gate' => 0, 'Passport' => 0, 'Pilot' => 0, 'Luggage' => 0, 'TowTruck' => 0));
     $this->assertEquals($compareData, unserialize($gameCollection->serializedData));
 }
 public function actionClaimCollectionItem($key, $typeKey)
 {
     if (Yii::app()->request->isAjaxRequest) {
         $availableTypes = GameCollection::getAvailableTypes();
         $collection = GameCollection::resolveByTypeAndPerson($availableTypes[$typeKey], Yii::app()->user->userModel);
         $itemsData = $collection->getItemsData();
         $itemsData[$key] = $itemsData[$key] + 1;
         $collection->setItemsData($itemsData);
         if (!$collection->save()) {
             throw new FailedToSaveModelException();
         }
     }
 }
 public function testResolveNewCollectionItems()
 {
     $bool = GameCollection::shouldReceiveCollectionItem();
     $this->assertTrue(is_bool($bool));
     Yii::app()->user->userModel = User::getByUsername('super');
     $availableTypes = GameCollection::getAvailableTypes();
     $this->assertCount(31, $availableTypes);
     $collection = GameCollection::resolveByTypeAndPerson($availableTypes[0], Yii::app()->user->userModel);
     $itemsData = $collection->getItemsData();
     $randomItem = array_rand($itemsData, 1);
     $compareData = array('Gate' => 0, 'Passport' => 0, 'Pilot' => 0, 'Luggage' => 0, 'TowTruck' => 0);
     $this->assertTrue($randomItem == 'Gate' || $randomItem == 'Passport' || $randomItem == 'Pilot' || $randomItem == 'Luggage' || $randomItem == 'TowTruck');
     $compareData[$randomItem] = $compareData[$randomItem] + 1;
     $itemsData[$randomItem] = $itemsData[$randomItem] + 1;
     $collection->setItemsData($itemsData);
     $collection->save();
     $this->assertEquals($compareData, $collection->getItemsData());
 }
 /**
  * Get a random collection item that can be collected by user
  * @param User $user
  * @return array
  */
 public static function getARandomCollectionItemForUser(User $user)
 {
     $availableTypes = GameCollection::getAvailableTypes();
     $randomTypeKey = array_rand($availableTypes, 1);
     $collection = GameCollection::resolveByTypeAndPerson($availableTypes[$randomTypeKey], $user);
     $itemsData = $collection->getItemsData();
     $randomKey = array_rand($itemsData, 1);
     return array($collection, $randomKey, $randomTypeKey);
 }