public function testIndexCurrent() { //one meeting planed new, one meeting planed old, one to be planed $employee = factory(\plunner\Employee::class)->make(); $this->company->employees()->save($employee); $group = factory(\plunner\Group::class)->make(); $this->company->groups()->save($group); $employee->groups()->attach($group); $group->meetings()->save(factory(\plunner\Meeting::class)->make()); //to be planed $new = factory(\plunner\Meeting::class)->make(['start_time' => (new \DateTime())->add(new \DateInterval('PT100S'))]); $group->meetings()->save($new); // new planed $employee->meetings()->attach($new->id); $old = factory(\plunner\Meeting::class)->make(['start_time' => (new \DateTime())->sub(new \DateInterval('PT100S'))]); $group->meetings()->save($old); // old planed $employee->meetings()->attach($old->id); //other planner meeting planned to test or condition $groupOther = \plunner\Group::whereNotIn('id', $employee->groups->pluck('id'))->firstOrFail(); $other = factory(\plunner\Meeting::class)->make(['start_time' => (new \DateTime())->add(new \DateInterval('PT100S'))]); $groupOther->meetings()->save($other); $response = $this->actingAs($employee)->json('GET', '/employees/meetings/?current=1'); $response->assertResponseOk(); $employee = $employee->fresh(); $response->seeJsonEquals($employee->meetings()->where(function ($query) { $query->where('start_time', '=', NULL); //to be planned $query->orWhere('start_time', '>=', new \DateTime()); //planned })->get()->toArray()); $content = $response->response->content(); $content = json_decode($content, true); $content = collect($content); $content = $content->pluck('id')->toArray(); $this->assertFalse(in_array($old->id, $content)); $this->assertTrue(in_array($new->id, $content)); $this->assertFalse(in_array($other->id, $content)); }