mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-19 09:51:37 +00:00
setup tests
This commit is contained in:
parent
3dc9ac7505
commit
75fad44fc4
56
.github/workflows/tests.yml
vendored
Normal file
56
.github/workflows/tests.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
name: tests
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql
|
||||
env:
|
||||
MYSQL_DATABASE: test_db
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: password
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
php: [ 8.1 ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php }}
|
||||
|
||||
- name: Cache Composer packages
|
||||
id: composer-cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: vendor
|
||||
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-php-
|
||||
- name: Install dependencies
|
||||
if: steps.composer-cache.outputs.cache-hit != 'true'
|
||||
run: composer install --prefer-dist --no-progress --no-suggest
|
||||
|
||||
- name: Run test suite
|
||||
run: php artisan test
|
||||
env:
|
||||
DB_HOST: 127.0.0.1
|
||||
DB_DATABASE: test_db
|
||||
DB_USERNAME: user
|
||||
DB_PASSWORD: password
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Bitbucket extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public ?string $url;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->url = request()->input('redirect') ?? null;
|
||||
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::BITBUCKET)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::BITBUCKET, $this->all());
|
||||
|
||||
session()->flash('status', 'bitbucket-updated');
|
||||
|
||||
if ($this->url) {
|
||||
$this->redirect($this->url);
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.bitbucket', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::BITBUCKET)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Github extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public ?string $url;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->url = request()->input('redirect') ?? null;
|
||||
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITHUB)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::GITHUB, array_merge($this->all()));
|
||||
|
||||
session()->flash('status', 'github-updated');
|
||||
|
||||
if ($this->url) {
|
||||
$this->redirect($this->url);
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.github', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITHUB)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\SourceControls;
|
||||
|
||||
use App\Actions\SourceControl\ConnectSourceControl;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Component;
|
||||
|
||||
class Gitlab extends Component
|
||||
{
|
||||
public string $token;
|
||||
|
||||
public ?string $url;
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->url = request()->input('redirect') ?? null;
|
||||
|
||||
$this->token = SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITLAB)
|
||||
->first()?->access_token ?? '';
|
||||
}
|
||||
|
||||
public function connect(): void
|
||||
{
|
||||
app(ConnectSourceControl::class)->connect(\App\Enums\SourceControl::GITLAB, $this->all());
|
||||
|
||||
session()->flash('status', 'gitlab-updated');
|
||||
|
||||
if ($this->url) {
|
||||
$this->redirect($this->url);
|
||||
}
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.source-controls.gitlab', [
|
||||
'sourceControl' => SourceControl::query()
|
||||
->where('provider', \App\Enums\SourceControl::GITLAB)
|
||||
->first(),
|
||||
]);
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
<div x-data="">
|
||||
<x-item-card>
|
||||
<div class="flex-none">
|
||||
@include('livewire.source-controls.partials.bitbucket-icon')
|
||||
</div>
|
||||
<div class="ml-3 flex flex-grow flex-col items-start justify-center">
|
||||
<span class="mb-1">{{ __("Bitbucket") }}</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="inline">
|
||||
@if($sourceControl)
|
||||
<x-secondary-button x-on:click="$dispatch('open-modal', 'connect-bitbucket')">{{ __("Modify") }}</x-secondary-button>
|
||||
@else
|
||||
<x-primary-button x-on:click="$dispatch('open-modal', 'connect-bitbucket')">{{ __("Connect") }}</x-primary-button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</x-item-card>
|
||||
<x-modal name="connect-bitbucket">
|
||||
<form wire:submit.prevent="connect" class="p-6">
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Connect to Bitbucket') }}
|
||||
</h2>
|
||||
|
||||
<div class="mt-6">
|
||||
<x-input-label for="token" :value="__('Access Token')" />
|
||||
<x-text-input wire:model.defer="token" id="token" name="token" type="text" :value="$sourceControl ? $sourceControl->token : ''" class="mt-1 w-full" />
|
||||
@error('token')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center justify-end">
|
||||
@if (session('status') === 'bitbucket-updated')
|
||||
<p class="mr-2">{{ __('Updated') }}</p>
|
||||
@endif
|
||||
|
||||
<x-secondary-button type="button" x-on:click="$dispatch('close')">
|
||||
{{ __('Cancel') }}
|
||||
</x-secondary-button>
|
||||
|
||||
<x-primary-button class="ml-3" @connected.window="$dispatch('close')">
|
||||
{{ __('Connect') }}
|
||||
</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</x-modal>
|
||||
</div>
|
@ -1,48 +0,0 @@
|
||||
<div x-data="">
|
||||
<x-item-card>
|
||||
<div class="flex-none">
|
||||
@include('livewire.source-controls.partials.github-icon')
|
||||
</div>
|
||||
<div class="ml-3 flex flex-grow flex-col items-start justify-center">
|
||||
<span class="mb-1">{{ __("Github") }}</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="inline">
|
||||
@if($sourceControl)
|
||||
<x-secondary-button x-on:click="$dispatch('open-modal', 'connect-github')">{{ __("Modify") }}</x-secondary-button>
|
||||
@else
|
||||
<x-primary-button x-on:click="$dispatch('open-modal', 'connect-github')">{{ __("Connect") }}</x-primary-button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</x-item-card>
|
||||
<x-modal name="connect-github">
|
||||
<form wire:submit.prevent="connect" class="p-6">
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Connect to Github') }}
|
||||
</h2>
|
||||
|
||||
<div class="mt-6">
|
||||
<x-input-label for="token" :value="__('Access Token')" />
|
||||
<x-text-input wire:model.defer="token" id="token" name="token" type="text" :value="$sourceControl ? $sourceControl->token : ''" class="mt-1 w-full" />
|
||||
@error('token')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center justify-end">
|
||||
@if (session('status') === 'github-updated')
|
||||
<p class="mr-2">{{ __('Updated') }}</p>
|
||||
@endif
|
||||
|
||||
<x-secondary-button type="button" x-on:click="$dispatch('close')">
|
||||
{{ __('Cancel') }}
|
||||
</x-secondary-button>
|
||||
|
||||
<x-primary-button class="ml-3" @connected.window="$dispatch('close')">
|
||||
{{ __('Connect') }}
|
||||
</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</x-modal>
|
||||
</div>
|
@ -1,48 +0,0 @@
|
||||
<div x-data="">
|
||||
<x-item-card>
|
||||
<div class="flex-none">
|
||||
@include('livewire.source-controls.partials.gitlab-icon')
|
||||
</div>
|
||||
<div class="ml-3 flex flex-grow flex-col items-start justify-center">
|
||||
<span class="mb-1">{{ __("Gitlab") }}</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="inline">
|
||||
@if($sourceControl)
|
||||
<x-secondary-button x-on:click="$dispatch('open-modal', 'connect-gitlab')">{{ __("Modify") }}</x-secondary-button>
|
||||
@else
|
||||
<x-primary-button x-on:click="$dispatch('open-modal', 'connect-gitlab')">{{ __("Connect") }}</x-primary-button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</x-item-card>
|
||||
<x-modal name="connect-gitlab">
|
||||
<form wire:submit.prevent="connect" class="p-6">
|
||||
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
|
||||
{{ __('Connect to Gitlab') }}
|
||||
</h2>
|
||||
|
||||
<div class="mt-6">
|
||||
<x-input-label for="token" :value="__('Access Token')" />
|
||||
<x-text-input wire:model.defer="token" id="token" name="token" type="text" :value="$sourceControl ? $sourceControl->token : ''" class="mt-1 w-full" />
|
||||
@error('token')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flex items-center justify-end">
|
||||
@if (session('status') === 'gitlab-updated')
|
||||
<p class="mr-2">{{ __('Updated') }}</p>
|
||||
@endif
|
||||
|
||||
<x-secondary-button type="button" x-on:click="$dispatch('close')">
|
||||
{{ __('Cancel') }}
|
||||
</x-secondary-button>
|
||||
|
||||
<x-primary-button class="ml-3" @connected.window="$dispatch('close')">
|
||||
{{ __('Connect') }}
|
||||
</x-primary-button>
|
||||
</div>
|
||||
</form>
|
||||
</x-modal>
|
||||
</div>
|
@ -21,7 +21,7 @@ public function test_visit_application()
|
||||
$this->actingAs($this->user);
|
||||
|
||||
$this->get(
|
||||
route('servers.sites.application', [
|
||||
route('servers.sites.show', [
|
||||
'server' => $this->server,
|
||||
'site' => $this->site
|
||||
])
|
||||
|
@ -29,7 +29,8 @@ public function test_create_site(): void
|
||||
|
||||
$this->actingAs($this->user);
|
||||
|
||||
\App\Models\SourceControl::factory()->create([
|
||||
/** @var \App\Models\SourceControl $sourceControl */
|
||||
$sourceControl = \App\Models\SourceControl::factory()->create([
|
||||
'provider' => SourceControl::GITHUB,
|
||||
]);
|
||||
|
||||
@ -39,7 +40,7 @@ public function test_create_site(): void
|
||||
->set('alias', 'www.example.com')
|
||||
->set('php_version', '8.2')
|
||||
->set('web_directory', 'public')
|
||||
->set('source_control', SourceControl::GITHUB)
|
||||
->set('source_control', $sourceControl->id)
|
||||
->set('repository', 'test/test')
|
||||
->set('branch', 'main')
|
||||
->set('composer', true)
|
||||
|
@ -3,8 +3,10 @@
|
||||
namespace Tests\Feature\Http;
|
||||
|
||||
use App\Http\Livewire\SourceControls\Bitbucket;
|
||||
use App\Http\Livewire\SourceControls\Connect;
|
||||
use App\Http\Livewire\SourceControls\Github;
|
||||
use App\Http\Livewire\SourceControls\Gitlab;
|
||||
use App\Http\Livewire\SourceControls\SourceControlsList;
|
||||
use App\Models\SourceControl;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
@ -18,14 +20,16 @@ class SourceControlsTest extends TestCase
|
||||
/**
|
||||
* @dataProvider data
|
||||
*/
|
||||
public function test_connect_provider(string $provider, string $component): void
|
||||
public function test_connect_provider(string $provider): void
|
||||
{
|
||||
$this->actingAs($this->user);
|
||||
|
||||
Http::fake();
|
||||
|
||||
Livewire::test($component)
|
||||
Livewire::test(Connect::class)
|
||||
->set('token', 'token')
|
||||
->set('name', 'profile')
|
||||
->set('provider', $provider)
|
||||
->call('connect')
|
||||
->assertSuccessful();
|
||||
|
||||
@ -37,17 +41,19 @@ public function test_connect_provider(string $provider, string $component): void
|
||||
/**
|
||||
* @dataProvider data
|
||||
*/
|
||||
public function test_delete_provider(string $provider, string $component): void
|
||||
public function test_delete_provider(string $provider): void
|
||||
{
|
||||
$this->actingAs($this->user);
|
||||
|
||||
SourceControl::factory()->create([
|
||||
/** @var SourceControl $sourceControl */
|
||||
$sourceControl = SourceControl::factory()->create([
|
||||
'provider' => $provider,
|
||||
'profile' => 'test'
|
||||
]);
|
||||
|
||||
Livewire::test($component)
|
||||
->set('token', '')
|
||||
->call('connect')
|
||||
Livewire::test(SourceControlsList::class)
|
||||
->set('deleteId', $sourceControl->id)
|
||||
->call('delete')
|
||||
->assertSuccessful();
|
||||
|
||||
$this->assertDatabaseMissing('source_controls', [
|
||||
@ -58,9 +64,9 @@ public function test_delete_provider(string $provider, string $component): void
|
||||
public static function data(): array
|
||||
{
|
||||
return [
|
||||
['github', Github::class],
|
||||
['gitlab', Gitlab::class],
|
||||
['bitbucket', Bitbucket::class],
|
||||
['github'],
|
||||
['gitlab'],
|
||||
['bitbucket'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user