createUser(); /** @var \App\Models\Workspace $workspace */ $workspace = $this->createUserWorkspace($user); /** @var \App\Models\Forms $form */ $form = $this->createForm($user, $workspace); /** @var \App\Models\OAuthProvider $provider */ $provider = OAuthProvider::factory() ->for($user) ->create(); /** @var FormIntegration $integration */ $integration = FormIntegration::factory() ->for($form) ->for($provider, 'provider') ->create([ 'data' => new SpreadsheetData( url: 'https://google.com', spreadsheet_id: 'sp_test', columns: [] ) ]); $google = new Google($integration); $manager = new SpreadsheetManager($google, $integration); $columns = $manager->buildColumns(); assertCount(14, $columns); foreach($columns as $key => $column) { assertEquals($form->properties[$key]['id'], $column['id']); assertEquals($form->properties[$key]['name'], $column['name']); } }); test('update columns', function () { /** @var \App\Models\User $user */ $user = $this->createUser(); /** @var \App\Models\Workspace $workspace */ $workspace = $this->createUserWorkspace($user); /** @var \App\Models\Forms $form */ $form = $this->createForm($user, $workspace); $form->update([ 'properties' => [ ['id' => '000', 'name' => 'First'], ['id' => '001', 'name' => 'Second'], ] ]); /** @var \App\Models\OAuthProvider $provider */ $provider = OAuthProvider::factory() ->for($user) ->create(); /** @var FormIntegration $integration */ $integration = FormIntegration::factory() ->for($form) ->for($provider, 'provider') ->create([ 'data' => new SpreadsheetData( url: 'https://google.com', spreadsheet_id: 'sp_test', columns: [ ['id' => '000', 'name' => 'First'], ['id' => '001', 'name' => 'Second'], ] ) ]); $google = new Google($integration); $manager = new SpreadsheetManager($google, $integration); $manager->buildColumns(); $form->update([ 'properties' => [ ['id' => '000', 'name' => 'First name'], ['id' => '002', 'name' => 'Email'], ] ]); $integration->refresh(); $columns = $manager->buildColumns(); assertCount(3, $columns); assertEquals('First name', $columns[0]['name']); assertEquals('Second', $columns[1]['name']); assertEquals('Email', $columns[2]['name']); }); test('build row', function () { /** @var \App\Models\User $user */ $user = $this->createUser(); /** @var \App\Models\Workspace $workspace */ $workspace = $this->createUserWorkspace($user); /** @var \App\Models\Forms $form */ $form = $this->createForm($user, $workspace); $form->update([ 'properties' => [ ['id' => '000', 'name' => 'First', 'type' => 'text'], ['id' => '001', 'name' => 'Second', 'type' => 'text'], ['id' => '002', 'name' => 'Third', 'type' => 'text'], ] ]); /** @var \App\Models\OAuthProvider $provider */ $provider = OAuthProvider::factory() ->for($user) ->create(); /** @var FormIntegration $integration */ $integration = FormIntegration::factory() ->for($form) ->for($provider, 'provider') ->create([ 'data' => new SpreadsheetData( url: 'https://google.com', spreadsheet_id: 'sp_test', columns: [ ['id' => '000', 'name' => 'First'], ['id' => '001', 'name' => 'Second'], ['id' => '002', 'name' => 'Third'], ] ) ]); $google = new Google($integration); $manager = new SpreadsheetManager($google, $integration); $submission = [ '002' => 'Third value', '000' => 'First value', ]; $row = $manager->buildRow($submission); assertSame(['First value', '', 'Third value'], $row); });