. */ declare(strict_types=1); namespace Tests\Api\Models\BudgetLimit; use Laravel\Passport\Passport; use Log; use Tests\Objects\Field; use Tests\Objects\FieldSet; use Tests\Objects\TestConfiguration; use Tests\TestCase; use Tests\Traits\CollectsValues; use Tests\Traits\TestHelpers; /** * Class StoreControllerTest */ class StoreControllerTest extends TestCase { use TestHelpers, CollectsValues; /** * @return array */ public function emptyDataProvider(): array { return [[[]]]; } /** * */ public function setUp(): void { parent::setUp(); Passport::actingAs($this->user()); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @return array */ public function storeDataProvider(): array { // some test configs: $configuration = new TestConfiguration; // default test set: $defaultSet = new FieldSet(); $defaultSet->title = 'default_budget_limit'; $defaultSet->addField(Field::createBasic('start', 'random-date-two-year')); $defaultSet->addField(Field::createBasic('end', 'random-date-one-year')); $defaultSet->addField(Field::createBasic('amount', 'random-amount')); $configuration->addMandatoryFieldSet($defaultSet); // optional tests $fieldSet = new FieldSet; $field = new Field; $field->fieldTitle = 'currency_id'; $field->fieldType = 'random-currency-id'; $field->ignorableFields = ['currency_code']; $field->title = 'currency_id'; $fieldSet->addField($field); $configuration->addOptionalFieldSet('currency_id', $fieldSet); $fieldSet = new FieldSet; $field = new Field; $field->fieldTitle = 'currency_code'; $field->fieldType = 'random-currency-code'; $field->ignorableFields = ['currency_id']; $field->title = 'currency_code'; $fieldSet->addField($field); $configuration->addOptionalFieldSet('currency_code', $fieldSet); $fieldSet = new FieldSet; $fieldSet->parameters = [1]; $field = Field::createBasic('start', 'random-date-two-year'); $field->ignorableFields = ['spent']; $fieldSet->addField($field); $configuration->addOptionalFieldSet('start', $fieldSet); $fieldSet = new FieldSet; $fieldSet->parameters = [1]; $field = Field::createBasic('end', 'random-date-one-year'); $field->ignorableFields = ['spent']; $fieldSet->addField($field); $configuration->addOptionalFieldSet('end', $fieldSet); $fieldSet = new FieldSet; $fieldSet->parameters = [1]; $fieldSet->addField(Field::createBasic('amount', 'random-amount')); $configuration->addOptionalFieldSet('amount', $fieldSet); return $configuration->generateAll(); } /** * @param array $submission * * emptyDataProvider / storeDataProvider * * @dataProvider emptyDataProvider */ public function testStore(array $submission): void { if ([] === $submission) { $this->markTestSkipped('Empty provider.'); } Log::debug('testStoreUpdated()'); Log::debug('submission :', $submission['submission']); Log::debug('expected :', $submission['expected']); Log::debug('ignore :', $submission['ignore']); // run account store with a minimal data set: $address = route('api.v1.budgets.limits.store', [1]); $this->assertPOST($address, $submission); } }