/** * Define your route model bindings, pattern filters, etc. * * @param \Illuminate\Routing\Router $router * @return void */ public function boot(Router $router) { parent::boot($router); // $router->model('accounts', Account::class); Route::bind('accounts', function ($id) { return Account::forCurrentUser()->findOrFail($id); }); Route::bind('budgets', function ($id) { return Budget::forCurrentUser()->findOrFail($id); }); Route::bind('transactions', function ($id) { return Transaction::forCurrentUser()->findOrFail($id); }); Route::bind('favouriteTransactions', function ($id) { return FavouriteTransaction::forCurrentUser()->findOrFail($id); }); Route::bind('savedFilters', function ($id) { return SavedFilter::forCurrentUser()->findOrFail($id); }); }
/** * Todo: I could also test switching from type transfer to another type, that the fromAccount and toAccount keys are removed. * @test * @return void */ public function it_can_update_a_favourite_transfer_transaction() { DB::beginTransaction(); $this->logInUser(); $favourite = FavouriteTransaction::forCurrentUser()->first(); $response = $this->call('PUT', '/api/favouriteTransactions/' . $favourite->id, ['name' => 'koala', 'type' => 'transfer', 'description' => 'kangaroo', 'merchant' => 'wombat', 'total' => 5, 'from_account_id' => 2, 'to_account_id' => 1, 'budget_ids' => [2, 3]]); $content = json_decode($response->getContent(), true); //dd($content); $this->checkFavouriteTransactionKeysExist($content); $this->assertEquals('koala', $content['name']); $this->assertEquals('transfer', $content['type']); $this->assertEquals('kangaroo', $content['description']); $this->assertEquals('wombat', $content['merchant']); $this->assertEquals('5', $content['total']); $this->assertArrayNotHasKey('account', $content); $this->assertEquals(2, $content['fromAccount']['id']); $this->assertEquals(1, $content['toAccount']['id']); $this->assertEquals(2, $content['budgets'][0]['id']); $this->assertEquals(3, $content['budgets'][1]['id']); $this->assertEquals(200, $response->getStatusCode()); DB::rollBack(); }
/** * GET /api/favouriteTransactions * @return Response */ public function index() { $favourites = FavouriteTransaction::forCurrentUser()->orderBy('name', 'asc')->get(); $favourites = $this->transform($this->createCollection($favourites, new FavouriteTransactionTransformer()))['data']; return response($favourites, Response::HTTP_OK); }