Reputation: 1059
how to write test for this function ?? how to test request-ajax()??
public function getChangeLoc(Request $request, $loc)
{
if ($request->ajax()) {
if(!in_array($loc, config('loc.available'))) {
return response()->json([
'status' => 'ERROR',
'message' => 'Not available'
]);
}
Session::put('locale', $loc);
return response()->json([
'status' => 'OK',
'loc' => $loc,
]);
}
if(!in_array($loc, config('loc.available'))) {
return Redirect::to('/?unknown-loc);
}
Session::put('loc', $loc);
if(filter_var($request->input('redirect_url', ''), FILTER_VALIDATE_URL)) {
return Redirect::to($request->input('redirect_url'));
}
return Redirect::to('/');
}
I test the function like this
$this->visit('/loc/en')
->seePageIs('/admin/client')
but its not see request->ajax?
Upvotes: 0
Views: 937
Reputation: 746
To test ajax requests you can implement function in your TestCase class this method. Your request needs HTTP_X-Requested-With header.
protected function ajaxPost($route = '', array $parameters = [])
{
return empty($route) ? null : $this->json(
'post',
$route,
$parameters,
['HTTP_X-Requested-With' => 'XMLHttpRequest']
);
}
Now you can test your classes
$this->ajaxPost(route('your.route'), ['foo' => 'bar'])->seeJson([
'is_ok' => true,
]);
Remember: it's not unit tests.
Upvotes: 2