adrema/tests/Fileshare/ExportSyncActionTest.php

71 lines
3.1 KiB
PHP

<?php
namespace Tests\Fileshare;
use App\Fileshare\ConnectionTypes\OwncloudConnection;
use App\Fileshare\Data\FileshareResourceData;
use App\Fileshare\Models\Fileshare;
use App\Form\Actions\ExportSyncAction;
use App\Form\Data\ExportData;
use App\Form\Models\Form;
use App\Form\Models\Participant;
use App\Group;
use Tests\FileshareTestCase;
use Tests\Lib\CreatesFormFields;
class ExportSyncActionTest extends FileshareTestCase
{
use CreatesFormFields;
public function testItDoesntUploadFileWhenNoExportGiven(): void
{
$form = Form::factory()->fields([
$this->textField('vorname'),
$this->textField('nachname'),
])->create();
ExportSyncAction::run($form);
$this->assertTrue(true);
}
public function testItUploadsRootFile(): void
{
$this->withoutExceptionHandling()->withUser('badenpowell', 'zai8hie3oozaiX5queey0Xa9a')->withDirs('badenpowell', ['/abc']);
$connection = Fileshare::factory()
->type(OwncloudConnection::from(['user' => 'badenpowell', 'password' => 'zai8hie3oozaiX5queey0Xa9a', 'base_url' => env('TEST_OWNCLOUD_DOMAIN')]))
->create();
$form = Form::factory()->name('Formular')->fields([
$this->textField('vorname'),
$this->textField('nachname'),
])->export(ExportData::from(['root' => FileshareResourceData::from(['connection_id' => $connection->id, 'resource' => '/abc'])]))->create();
Participant::factory()->for($form)->data(['firstname' => 'AAA', 'lastname' => 'BBB'])->create();
ExportSyncAction::run($form);
$this->assertEquals(['abc/Anmeldungen Formular.xlsx'], $connection->type->getFilesystem()->files('/abc'));
$this->assertTrue(true);
}
public function testItUploadsGroupFile(): void
{
$this->withoutExceptionHandling()->withUser('badenpowell', 'Aejahpoopood1Keetaaghoe0Z')->withDirs('badenpowell', ['/abc', '/stamm']);
$connection = Fileshare::factory()
->type(OwncloudConnection::from(['user' => 'badenpowell', 'password' => 'Aejahpoopood1Keetaaghoe0Z', 'base_url' => env('TEST_OWNCLOUD_DOMAIN')]))
->create();
$group = Group::factory()->create(['fileshare' => FileshareResourceData::from(['connection_id' => $connection->id, 'resource' => '/stamm'])]);
$form = Form::factory()->name('Formular')->fields([
$this->textField('vorname')->name('Vorname'),
$this->textField('nachname')->name('Nachname'),
$this->groupField('stamm')->name('Stamm'),
])->export(ExportData::from(['to_group_field' => 'stamm', 'group_by' => 'vorname', 'root' => FileshareResourceData::from(['connection_id' => $connection->id, 'resource' => '/abc'])]))->create();
Participant::factory()->for($form)->data(['vorname' => 'AAA', 'nachname' => 'BBB', 'stamm' => $group->id])->create();
Participant::factory()->for($form)->data(['vorname' => 'CCC', 'nachname' => 'DDD', 'stamm' => null])->create();
ExportSyncAction::run($form);
$this->assertEquals(['stamm/Anmeldungen Formular.xlsx'], $connection->type->getFilesystem()->files('/stamm'));
$this->assertTrue(true);
}
}