90 lines
2.9 KiB
PHP
90 lines
2.9 KiB
PHP
<?php /** @noinspection PhpUnused */
|
|
|
|
namespace TorstenHettstedt\TimekeepingApi\Tests\Api\WorkingHours;
|
|
|
|
use ApiTester;
|
|
use Codeception\Example;
|
|
use Codeception\Util\HttpCode;
|
|
use Helper\Api;
|
|
|
|
class BrowseWorkingHoursCest
|
|
{
|
|
public static function preflight(ApiTester $I): void
|
|
{
|
|
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
|
|
$I->haveHttpHeader('Access-Control-Request-Method', 'GET');
|
|
$I->sendOptions('/working-hours');
|
|
$I->seeResponseCodeIs(HttpCode::OK);
|
|
$I->seeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
|
|
$I->seeHttpHeader('Access-Control-Allow-Methods');
|
|
$I->seeHttpHeader('Access-Control-Allow-Headers');
|
|
$I->seeHttpHeader('Access-Control-Max-Age');
|
|
}
|
|
|
|
/**
|
|
* @param ApiTester $I
|
|
*
|
|
* @dataProvider validWorkingHoursFilterProvider
|
|
*/
|
|
public function browseEmptyWorkingHours(ApiTester $I): void
|
|
{
|
|
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
|
|
$I->sendGet('/working-hours', ['start-date' => '2020-04-01', 'end-date' => '2020-04-30']);
|
|
$I->seeResponseCodeIs(HttpCode::OK);
|
|
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
|
|
$I->seeResponseIsJson();
|
|
$I->seeResponseEquals('[]');
|
|
}
|
|
|
|
public function validWorkingHoursFilterProvider(): array
|
|
{
|
|
return [
|
|
[[null]],
|
|
[['start-date' => '2020-01-01', 'end-date' => '2020-01-08']],
|
|
[['start-date' => '2020-01-01', 'end-date' => '2020-04-30']],
|
|
[['start-date' => '2020-03-01', 'end-date' => '2020-03-07']],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param ApiTester $I
|
|
* @param Example $example
|
|
*
|
|
* @dataProvider validWorkingHoursFilterProvider
|
|
*/
|
|
public function browseWorkingHours(ApiTester $I, Example $example): void
|
|
{
|
|
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
|
|
$I->sendGet('/working-hours', $example[0]);
|
|
$I->seeResponseCodeIs(HttpCode::OK);
|
|
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
|
|
$I->seeResponseIsJson();
|
|
$I->seeResponseMatchesJsonType(Api::WORKING_HOURS_JSON_FORMAT);
|
|
}
|
|
|
|
public function invalidWorkingHoursFilterProvider(): array
|
|
{
|
|
return [
|
|
['2020-11-31'],
|
|
['2020-11'],
|
|
['2020'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param ApiTester $I
|
|
* @param Example $example
|
|
*
|
|
* @dataProvider invalidWorkingHoursFilterProvider
|
|
*/
|
|
public function browseWorkingHoursWithWrongFilterDate(ApiTester $I, Example $example): void
|
|
{
|
|
$I->haveHttpHeader('Origin', Api::TEST_ORIGIN);
|
|
$I->sendGet('/working-hours', ['start-date' => $example[0]]);
|
|
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
|
|
$I->canSeeHttpHeader('Access-Control-Allow-Origin', Api::TEST_ORIGIN);
|
|
$I->seeResponseIsJson();
|
|
$I->seeResponseMatchesJsonType(Api::ERROR_JSON_FORMAT);
|
|
}
|
|
}
|