/** * Handle the event. * * @param OpenBattleCompleted $event * @return void */ public function handle(OpenBattleCompleted $event) { $openBattle = $event->openBattle; // create new Battle $battle = new Battle(); $battle->rapper1_id = $openBattle->rapper1_id; $battle->rapper2_id = $openBattle->rapper2_id; $battle->video = $event->outfilename; $battle->save(); // delete OpenBattle $openBattle->delete(); }
/** * Test for getVideo */ public function testGetVideo() { //$this->withoutMiddleware(); $user1 = factory(App\Models\User::class)->create(['rating' => 3]); $user2 = factory(App\Models\User::class)->create(['rating' => 6]); $battle = new Battle(); $battle->rapper1_id = $user1->id; $battle->rapper2_id = $user2->id; $battle->video = "/path/to/file"; $battle->votes_rapper1 = 45; $battle->votes_rapper2 = 86; $battle->save(); //echo $battle->id; $this->get('/video/{id}', ['id' => $battle->id]); }
/** * Tests whether the data can be retrieved from the database */ public function testExtract() { // create users $user1 = factory(App\Models\User::class)->create(); $user2 = factory(App\Models\User::class)->create(); $user3 = factory(App\Models\User::class)->create(); // create battle $battle = new Battle(); $battle->rapper1_id = $user1->id; $battle->rapper2_id = $user2->id; $battle->save(); // create some votes $vote1 = new Vote(); $vote1->user_id = $user1->id; $vote1->battle_id = $battle->id; $vote1->rapper_number = 1; $vote1->save(); $vote2 = new Vote(); $vote2->user_id = $user2->id; $vote2->battle_id = $battle->id; $vote2->rapper_number = 0; $vote2->save(); $vote3 = new Vote(); $vote3->user_id = $user3->id; $vote3->battle_id = $battle->id; $vote3->rapper_number = 0; $vote3->save(); // can user be retrieved? $this->assertEquals($user3->id, $vote3->user->id); // can battle be retrieved? $this->assertEquals($battle->id, $vote3->battle->id); // can a battle get it's votes? $battlevotecnt = $battle->votes()->count(); $this->assertEquals(3, $battlevotecnt); $battlevotes = $battle->votes()->get()->values()->keyBy('user_id'); $this->assertNotNull($battlevotes->get($user1->id)); $this->assertNotNull($battlevotes->get($user2->id)); $this->assertNotNull($battlevotes->get($user3->id)); // can a user get their votes? $vote1id = $user1->votes()->get()->values()->keyBy('user_id')->get($user1->id)->id; $this->assertEquals($vote1->id, $vote1id); }
/** * Test for battles() * * @return void */ public function testBattles() { $user1 = factory(App\Models\User::class)->create(); $user2 = factory(App\Models\User::class)->create(); $user3 = factory(App\Models\User::class)->create(); $battle1 = new Battle(); $battle1->rapper1_id = $user1->id; $battle1->rapper2_id = $user2->id; $battle1->save(); $battle2 = new Battle(); $battle2->rapper1_id = $user2->id; $battle2->rapper2_id = $user3->id; $battle2->save(); $battle3 = new Battle(); $battle3->rapper1_id = $user3->id; $battle3->rapper2_id = $user1->id; $battle3->save(); // get battles of user2 $battles = $user2->battles()->lists('id')->toArray(); $this->assertCount(2, $battles); $this->assertContains($battle1->id, $battles); $this->assertContains($battle2->id, $battles); $this->assertNotContains($battle3->id, $battles); }
/** * Test for scopeOpenVoting and scopeCompleted */ public function testScopesOpenCompleted() { // create rappers $user1 = factory(App\Models\User::class)->create(); $user2 = factory(App\Models\User::class)->create(); $votingperiod = config('rap-battle.votingperiod', 24); // battles older than this date are closed: $timeoldest = new Carbon(); $timeoldest->subHours($votingperiod + 1); // create two battles $battle1 = new Battle(); $battle1->rapper1_id = $user1->id; $battle1->rapper2_id = $user2->id; $battle1->save(); $battle2 = new Battle(); $battle2->rapper1_id = $user1->id; $battle2->rapper2_id = $user2->id; $battle2->created_at = $timeoldest->toDateTimeString(); $battle2->save(); // test scopeOpenVoting // get battles from database $openBattles = Battle::openVoting()->get()->values()->keyBy('id'); $this->assertTrue($openBattles->has($battle1->id)); $this->assertFalse($openBattles->has($battle2->id)); // test scopeCompleted // get battles from database $completedBattles = Battle::completed()->get()->values()->keyBy('id'); $this->assertFalse($completedBattles->has($battle1->id)); $this->assertTrue($completedBattles->has($battle2->id)); }
/** * Test for postVote */ public function testPostVote() { $user1 = factory(App\Models\User::class)->create(); $user2 = factory(App\Models\User::class)->create(); // create two battles $battle = new Battle(); $battle->rapper1_id = $user1->id; $battle->rapper2_id = $user2->id; $battle->votes_rapper1 = 0; $battle->votes_rapper2 = 0; $battle->save(); $this->actingAs($user1)->post('/battle/' . $battle->id . '/vote', ['rapper_number' => 1]); // TODO: check if vote exists $this->assertEquals(1, $battle->votes()->count()); $this->assertEquals(0, $battle->votes_rapper1); $this->assertEquals(1, $battle->votes_rapper2); }
/** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); // config $usercnt = 20; $userRappercnt = 20; $battlecnt = 20; $battleRequestcnt = rand($userRappercnt / 4, $userRappercnt / 2); // max $userRappercnt / 2 $openBattlecnt = rand($userRappercnt / 4, $userRappercnt / 2); // max $userRappercnt / 2 // create users $users = factory(App\Models\User::class, $usercnt)->create(); // rapper and non-rapper $usersRapper = factory(App\Models\User::class, 'rapper', $userRappercnt)->create(); // rapper only //---------------------------------------------- // create battles for ($i = 0; $i < $battlecnt; $i++) { $battle = new Battle(); // get first rapper $battle->rapper1_id = $usersRapper->random()->id; // get second rapper != first rapper do { $battle->rapper2_id = $usersRapper->random()->id; } while ($battle->rapper1_id == $battle->rapper2_id); $battle->save(); //----------------------------------------- // create votes // create list of all created users $usersAll = $users->keyBy('id')->merge($usersRapper->keyBy('id')); $usersAll->shuffle(); $userVotescnt = rand(0, $usersAll->count()); for ($j = 0; $j < $userVotescnt; $j++) { $vote = new Vote(); $vote->user_id = $usersAll->get($j)->id; $vote->battle_id = $battle->id; $vote->rapper_number = rand(0, 1); $vote->save(); // update vote counter if ($vote->rapper_number == 0) { $battle->votes_rapper1++; } else { $battle->votes_rapper2++; } } // save vote count in battle $battle->save(); $battle->rapper1->updateRating(); $battle->rapper2->updateRating(); } //---------------------------------------------- // create battle_requests for ($i = 0; $i < $battleRequestcnt * 2; $i += 2) { $battleRequest = new BattleRequest(); $battleRequest->challenger_id = $usersRapper->get($i)->id; $battleRequest->challenged_id = $usersRapper->get($i + 1)->id; $battleRequest->save(); } //---------------------------------------------- // create open battles $usersRapper->shuffle(); for ($i = 0; $i < $openBattlecnt * 2; $i += 2) { $openBattle = new OpenBattle(); $openBattle->rapper1_id = $usersRapper->get($i)->id; $openBattle->rapper2_id = $usersRapper->get($i + 1)->id; $openBattle->phase = rand(1, 2); // TODO: how many phases? $openBattle->beat1_id = rand(0, 2); $openBattle->beat2_id = rand(0, 2); $openBattle->save(); } Model::reguard(); }