addData('base'); $this->pirepSvc = app('App\Services\PIREPService'); } /** */ public function testAddPirep() { $pirep = factory(App\Models\Pirep::class)->create(); $pirep = $this->pirepSvc->create($pirep, []); /** * Check the initial state info */ $this->assertEquals($pirep->state, PirepState::PENDING); /** * Now set the PIREP state to ACCEPTED */ $new_pirep_count = $pirep->pilot->flights + 1; $original_flight_time = $pirep->pilot->flight_time ; $new_flight_time = $pirep->pilot->flight_time + $pirep->flight_time; $this->pirepSvc->changeState($pirep, PirepState::ACCEPTED); $this->assertEquals($new_pirep_count, $pirep->pilot->flights); $this->assertEquals($new_flight_time, $pirep->pilot->flight_time); $this->assertEquals($pirep->arr_airport_id, $pirep->pilot->curr_airport_id); #$this->assertEquals(1, $pirep->pilot->rank_id); /** * Now go from ACCEPTED to REJECTED */ $new_pirep_count = $pirep->pilot->flights - 1; $new_flight_time = $pirep->pilot->flight_time - $pirep->flight_time; $this->pirepSvc->changeState($pirep, PirepState::REJECTED); $this->assertEquals($new_pirep_count, $pirep->pilot->flights); $this->assertEquals($new_flight_time, $pirep->pilot->flight_time); $this->assertEquals($pirep->arr_airport_id, $pirep->pilot->curr_airport_id); } /** * check the stats/ranks, etc have incremented properly */ public function testPilotStatsIncr() { $original_pilot = User::find(1); # Submit two PIREPs $pireps = factory(Pirep::class, 2)->create([ 'user_id' => 1, # 360min == 6 hours, rank should bump up 'flight_time' => 360, ]); foreach ($pireps as $pirep) { $this->pirepSvc->create($pirep); $this->pirepSvc->accept($pirep); } $pilot = User::find(1); $last_pirep = Pirep::where('id', $pilot->last_pirep_id)->first(); # Make sure rank went up $this->assertGreaterThan($original_pilot->rank_id, $pilot->rank_id); $this->assertEquals($last_pirep->arr_airport_id, $pilot->curr_airport_id); # # Submit another PIREP, adding another 6 hours # it should automatically be accepted # $pirep = factory(Pirep::class)->create([ 'user_id' => 1, # 120min == 2 hours, currently at 9 hours # Rank bumps up at 10 hours 'flight_time' => 120, ]); # Pilot should be at rank 2, where accept should be automatic $this->pirepSvc->create($pirep); $pilot->refresh(); $latest_pirep = Pirep::where('id', $pilot->last_pirep_id)->first(); # Make sure PIREP was auto updated $this->assertEquals(PirepState::ACCEPTED, $latest_pirep->state); # Make sure latest PIREP was updated $this->assertNotEquals($last_pirep->id, $latest_pirep->id); } public function testPirepFinances() { } }