TimoCuijpers's avatar

TimoCuijpers liked a comment+100 XP

1w ago

How to assert that the database contains a value stored as JSON

    /**
     * @test
     */
    public function canUpdate()
    {
        $authUser = UserFactory::createDefault();
        $this->actingAs($authUser);

        $generator = GeneratorFactory::createDefault();

        $request = [
            'requires_data' => true,
            'documentation' => "99999",
            'prompters' => [
                'array-data',
                ['more-data' => 'cool'],
                'data' => 'some-data',
                'collectionA' => [
                    ['not-working' => 'cant-access'],
                    'data' => 'some-more-data'
                ],
                'collection' => [
                    ['data' => 'some-more-data']
                ]
            ],
            'file_modifiers' => [],
            'template_ids' => []
        ];

        $response = $this->putJson("/api/generators/{$generator->id}", $request);
        $response->assertOk();

        $this->assertDatabaseHas('generators', [
            'id' => $generator->id,
            'generator_set_id' => $generator->generatorSet->id,
            'requires_data' => true,
            'documentation' => 99999,
            'prompters->0' => 'array-data',
            'prompters->1->more-data' => 'cool',
            'prompters->data' => 'some-data',
            'prompters->collectionA->data' => 'some-more-data',
            'prompters->collectionA->0->not-working' => 'cant-access',
            'file_modifiers->0' => null,
        ]);
    }