Add api routes to get/add/remove bids for a user #172

This commit is contained in:
Nabeel Shahzad
2018-02-22 10:44:15 -06:00
parent e176772512
commit 6dfab75f08
8 changed files with 120 additions and 362 deletions

View File

@@ -155,8 +155,8 @@ class FlightTest extends TestCase
$this->assertTrue($flight->has_bid);
# Check the table and make sure thee entry is there
$user_bid = UserBid::where(['flight_id'=>$flight->id, 'user_id'=>$user->id])->get();
$this->assertNotNull($user_bid);
$this->expectException(\App\Exceptions\BidExists::class);
$this->flightSvc->addBid($flight, $user);
$user->refresh();
$this->assertEquals(1, $user->bids->count());
@@ -216,10 +216,39 @@ class FlightTest extends TestCase
$flight = $this->addFlight($user1);
# Put bid on the flight to block it off
$bid = $this->flightSvc->addBid($flight, $user1);
$this->flightSvc->addBid($flight, $user1);
$bidRepeat = $this->flightSvc->addBid($flight, $user2);
$this->assertNull($bidRepeat);
# Try adding again, should throw an exception
$this->expectException(\App\Exceptions\BidExists::class);
$this->flightSvc->addBid($flight, $user2);
}
/**
* Add a flight bid VIA the API
*/
public function testAddBidApi()
{
$this->user = factory(User::class)->create();
$user2 = factory(User::class)->create();
$flight = $this->addFlight($this->user);
$uri = '/api/user/bids';
$data = ['flight_id' => $flight->id];
$body = $this->put($uri, $data)->json('data');
$this->assertCount(1, $body);
$this->assertEquals($body[0]['id'], $flight->id);
# Now try to have the second user bid on it
# Should return a 409 error
$response = $this->put($uri, $data, [], $user2);
$response->assertStatus(409);
# Try now deleting the bid from the user
$response = $this->delete($uri, $data);
$body = $response->json('data');
$this->assertCount(0, $body);
}
/**

View File

@@ -127,6 +127,24 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
return $req;
}
/**
* Override the PUT calls to inject the user API key
* @param string $uri
* @param array $data
* @param array $headers
* @param null $user
* @return \Illuminate\Foundation\Testing\TestResponse
*/
public function put($uri, array $data = [], array $headers = [], $user = null)
{
$req = parent::put($uri, $data, $this->headers($user, $headers));
if ($req->isClientError() || $req->isServerError()) {
Log::error('PUT Error: ' . $uri, $req->json());
}
return $req;
}
/**
* Override the DELETE calls to inject the user API key
* @param string $uri