adrema/modules/Fileshare/Components/FormTest.php

156 lines
5.8 KiB
PHP

<?php
namespace Modules\Fileshare\Components;
use App\Fileshare\ConnectionTypes\NextcloudConnection;
use App\Fileshare\ConnectionTypes\OwncloudConnection;
use App\Fileshare\Models\Fileshare;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Livewire\Livewire;
use Tests\FileshareTestCase;
uses(FileshareTestCase::class);
uses(DatabaseTransactions::class);
it('it displays values', function () {
test()->withoutExceptionHandling()->login()->loginNami();
Livewire::test(Form::class)
->assertSet('name', '')
->assertSee('Bezeichnung')
->assertSee('Owncloud')
->assertSee('Nextcloud')
->assertSet('type', []);
});
it('it displays owncloud connection values', function () {
test()->withoutExceptionHandling()->login()->loginNami();
Livewire::test(Form::class)
->set('typeClass', OwncloudConnection::class)
->assertSet('typeClass', OwncloudConnection::class)
->assertSee('Benutzer')
->assertSee('URL')
->assertSet('type.user', '')
->assertSet('type.base_url', '')
->assertSet('type.password', '');
});
it('it saves owncloud connection', function () {
test()->login()->loginNami()->withUser('badenpowell', 'secret');
Livewire::test(Form::class)
->set('name', 'lala')
->set('typeClass', OwncloudConnection::class)
->set('type.user', 'badenpowell')
->set('type.password', 'secret')
->set('type.base_url', env('TEST_OWNCLOUD_DOMAIN'))
->call('onSave')
->assertDispatched('success', 'Verbindung erstellt.')
->assertDispatched('refresh-page');
$connection = Fileshare::firstOrFail();
$this->assertEquals('badenpowell', $connection->type->user);
$this->assertEquals('secret', $connection->type->password);
$this->assertEquals(env('TEST_OWNCLOUD_DOMAIN'), $connection->type->baseUrl);
$this->assertEquals('lala', $connection->name);
});
it('it saves nextcloud connection', function () {
test()->login()->loginNami()->withUser('badenpowell', 'secret');
Livewire::test(Form::class)
->set('name', 'lala')
->set('typeClass', NextcloudConnection::class)
->set('type.user', 'badenpowell')
->set('type.password', 'secret')
->set('type.base_url', env('TEST_OWNCLOUD_DOMAIN'))
->call('onSave')
->assertDispatched('success', 'Verbindung erstellt.')
->assertDispatched('refresh-page');
$connection = Fileshare::firstOrFail();
$this->assertEquals('badenpowell', $connection->type->user);
$this->assertEquals('secret', $connection->type->password);
$this->assertEquals(env('TEST_OWNCLOUD_DOMAIN'), $connection->type->baseUrl);
$this->assertEquals('lala', $connection->name);
});
it('checks nextcloud connection', function () {
test()->login()->loginNami()->withUser('badenpowell', 'secret');
Livewire::test(Form::class)
->set('name', 'lala')
->set('typeClass', NextcloudConnection::class)
->set('type.user', 'badenpowell')
->set('type.password', 'wrong')
->set('type.base_url', env('TEST_OWNCLOUD_DOMAIN'))
->call('onSave')
->assertHasErrors(['typeClass' => 'Verbindung fehlgeschlagen']);
});
it('validates input', function ($attributes, $errors) {
test()->login()->loginNami()->withUser('badenpowell', 'secret');
Livewire::test(Form::class)
->set('name', 'lala')
->set('typeClass', NextcloudConnection::class)
->set('type.user', 'badenpowell')
->set('type.password', 'wrong')
->set('type.base_url', env('TEST_OWNCLOUD_DOMAIN'))
->setArray($attributes)
->call('onSave')
->assertHasErrors($errors);
})->with([
[['name' => ''], ['name' => 'Bezeichnung ist erforderlich.']],
[['typeClass' => null], ['typeClass' => 'Typ ist erforderlich.']],
]);
it('updates a connection', function () {
$this->withoutExceptionHandling()->login()->loginNami()->withUser('badenpowell', 'secretneu');
$connection = Fileshare::factory()
->type(OwncloudConnection::from(['user' => 'test', 'password' => 'secret', 'base_url' => env('TEST_OWNCLOUD_DOMAIN')]))
->name('lokaler Server')
->create();
Livewire::test(Form::class, ['id' => $connection->id])
->assertSet('name', 'lokaler Server')
->assertSet('typeClass', OwncloudConnection::class)
->assertSet('type.user', 'test')
->assertSet('type.password', 'secret')
->assertSet('type.base_url', env('TEST_OWNCLOUD_DOMAIN'))
->setArray([
'name' => 'Lala',
'typeClass' => OwncloudConnection::class,
'type' => [
'user' => 'badenpowell',
'password' => 'secretneu',
'base_url' => env('TEST_OWNCLOUD_DOMAIN'),
]
])
->call('onSave')
->assertDispatched('success', 'Verbindung aktualisiert.')
->assertDispatched('refresh-page');
$connection = Fileshare::firstOrFail();
$this->assertEquals('badenpowell', $connection->type->user);
$this->assertEquals('secretneu', $connection->type->password);
$this->assertEquals(env('TEST_OWNCLOUD_DOMAIN'), $connection->type->baseUrl);
$this->assertEquals('Lala', $connection->name);
});
it('checks a connection while updating', function () {
$this->withoutExceptionHandling()->login()->loginNami()->withUser('badenpowell', 'secretneu');
$connection = Fileshare::factory()
->type(OwncloudConnection::from(['user' => 'test', 'password' => 'secret', 'base_url' => env('TEST_OWNCLOUD_DOMAIN')]))
->name('lokaler Server')
->create();
Livewire::test(Form::class, ['id' => $connection->id])
->set('type.password', 'wrong')
->call('onSave')
->assertHasErrors(['typeClass' => 'Verbindung fehlgeschlagen']);
});