I'm attempting to try and unit test the class below. I don't know if this is the proper way to do it but this is what I"m attempting. The first assertion in each test fails due to these error messages.
Failed asserting that an array contains 'App\Filters\Concerns\FiltersByStatus'.
Failed asserting that an array contains 'App\Filters\Concerns\FiltersByStartDate'.
What suggestions does anyone have to correct this error or perhaps better write the test for this?
<?php
namespace App\Filters;
class UserFilters extends Filters
{
use Concerns\FiltersByStartDate,
Concerns\FiltersByStatus;
/**
* Registered filters to operate upon.
*
* @var array
*/
public $filters = ['status', 'started_at'];
}
<?php
namespace Tests\Unit\Filters;
use App\Filters\Concerns\FiltersByStartDate;
use App\Filters\Concerns\FiltersByStatus;
use App\Filters\UserFilters;
use Tests\TestCase;
class UserFiltersTest extends TestCase
{
/** @var App\Filters\UserFilters */
protected $subject;
/**
* Setup the test environment.
*
* @return void
*/
protected function setUp(): void
{
parent::setUp();
$this->subject = $this->mock(UserFilters::class);
}
/** @test */
public function user_filters_include_filtering_by_status()
{
$this->assertUsesTrait(FiltersByStatus::class, $this->subject);
$this->assertTrue(in_array('status', get_class($this->subject)->filters));
}
/** @test */
public function user_filters_include_filtering_by_started_at_date()
{
$this->assertUsesTrait(FiltersByStartDate::class, $this->subject);
$this->assertTrue(in_array('started_at', $this->subject->filters));
}
}