Skip to content

Commit

Permalink
hub: fix unsetting flags on tools (#2877)
Browse files Browse the repository at this point in the history
* hub: fix unsetting flags on tools

* Run php-cs-fixer

---------

Co-authored-by: emmachughes <[email protected]>
  • Loading branch information
emmachughes and emmachughes authored Dec 18, 2024
1 parent 9fe98fa commit c55a9c7
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 6 deletions.
4 changes: 4 additions & 0 deletions sourcecode/hub/app/Http/Requests/UpdateLtiToolRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ public function prepareForValidation(): void
if (!$parameters->get('slug')) {
$parameters->remove('slug');
}

$parameters->set('send_name', $parameters->getBoolean('send_name', false));
$parameters->set('send_email', $parameters->getBoolean('send_email', false));
$parameters->set('proxy_launch', $parameters->getBoolean('proxy_launch', false));
}

/**
Expand Down
12 changes: 11 additions & 1 deletion sourcecode/hub/database/factories/LtiToolFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,17 @@ public function launchUrl(string $launchUrl): self
return $this->state(['creator_launch_url' => $launchUrl]);
}

public function proxyLaunch(bool $proxyLaunch): self
public function sendName(bool $sendName = true): self
{
return $this->state(['send_name' => $sendName]);
}

public function sendEmail(bool $sendEmail = true): self
{
return $this->state(['send_email' => $sendEmail]);
}

public function proxyLaunch(bool $proxyLaunch = true): self
{
return $this->state(['proxy_launch' => $proxyLaunch]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<div class="d-flex flex-column gap-3">
@foreach ($tools as $tool)
<article class="card">
<article class="card lti-tool-card">
<div class="card-header">
<strong class="card-title">{{ $tool->name }}</strong>
</div>
Expand Down Expand Up @@ -41,15 +41,15 @@
</tr>
<tr>
<th scope="row">{{ trans('messages.send-full-name-to-lti-tool', ['site' => config('app.name')]) }}</th>
<td>{{ $tool->send_name ? trans('messages.yes') : trans('messages.no') }}</td>
<td class="lti-tool-card-send-name">{{ $tool->send_name ? trans('messages.yes') : trans('messages.no') }}</td>
</tr>
<tr>
<th scope="row">{{ trans('messages.send-email-to-lti-tool', ['site' => config('app.name')]) }}</th>
<td>{{ $tool->send_email ? trans('messages.yes') : trans('messages.no') }}</td>
<td class="lti-tool-card-send-email">{{ $tool->send_email ? trans('messages.yes') : trans('messages.no') }}</td>
</tr>
<tr>
<th scope="row">{{ trans('messages.proxy-launch-to-lti-tool', ['site' => config('app.name')]) }}</th>
<td>{{ $tool->proxy_launch ? trans('messages.yes') : trans('messages.no') }}</td>
<td class="lti-tool-card-proxy-launch">{{ $tool->proxy_launch ? trans('messages.yes') : trans('messages.no') }}</td>
</tr>
</tbody>
</table>
Expand Down
53 changes: 52 additions & 1 deletion sourcecode/hub/tests/Browser/AdminTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Laravel\Dusk\Browser;
use Tests\Browser\Components\LtiPlatformAddedAlert;
use Tests\Browser\Components\LtiPlatformCard;
use Tests\Browser\Components\LtiToolCard;
use Tests\DuskTestCase;

final class AdminTest extends DuskTestCase
Expand Down Expand Up @@ -193,7 +194,7 @@ public function testCreatesToolsWithSlug(): void
);
}

public function testCanEditUrlSlug(): void
public function testCanEditUrlSlugForTool(): void
{
LtiTool::factory()->withName('Hammer')->slug('the-old-slug')->create();
$user = User::factory()->name('Ben Hammerhead')->admin()->create();
Expand All @@ -215,4 +216,54 @@ public function testCanEditUrlSlug(): void
->assertPresent('.lti-launch')
);
}

public function testCanEditFlagsForTool(): void
{
$user = User::factory()->name('Flagg Stang')->admin()->create();
LtiTool::factory()
->withName('The Tool')
->sendName()
->sendEmail()
->proxyLaunch()
->create();

$this->browse(
fn (Browser $browser) =>
$browser
->loginAs($user->email)
->assertAuthenticated()
->visit('/')
->press('Flagg Stang')
->clickLink('Admin home')
->clickLink('Manage LTI tools')
->with(
new LtiToolCard(),
fn (Browser $card) =>
$card
->assertSeeIn('@proxy-launch', 'Yes')
->assertSeeIn('@send-email', 'Yes')
->assertSeeIn('@send-name', 'Yes')
)
->clickLink('Edit')
->assertChecked('proxy_launch')
->uncheck('proxy_launch')
->assertChecked('send_name')
->uncheck('send_name')
->assertChecked('send_email')
->uncheck('send_email')
->press('Update')
->assertSee('LTI tool updated.')
->press('Flagg Stang')
->clickLink('Admin home')
->clickLink('Manage LTI tools')
->with(
new LtiToolCard(),
fn (Browser $card) =>
$card
->assertSeeIn('@proxy-launch', 'No')
->assertSeeIn('@send-email', 'No')
->assertSeeIn('@send-name', 'No')
)
);
}
}
33 changes: 33 additions & 0 deletions sourcecode/hub/tests/Browser/Components/LtiToolCard.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

declare(strict_types=1);

namespace Tests\Browser\Components;

use Laravel\Dusk\Browser;
use Laravel\Dusk\Component;

final class LtiToolCard extends Component
{
public function selector(): string
{
return '.lti-tool-card';
}

public function assert(Browser $browser): void
{
$browser->assertVisible($this->selector());
}

/**
* @return array<mixed>
*/
public function elements(): array
{
return [
'@proxy-launch' => '.lti-tool-card-proxy-launch',
'@send-email' => '.lti-tool-card-send-email',
'@send-name' => '.lti-tool-card-send-name',
];
}
}

0 comments on commit c55a9c7

Please sign in to comment.