Add tests

This commit is contained in:
Craig Anderson
2022-04-05 09:55:41 -04:00
parent b80742a0ae
commit 8754541200
12 changed files with 129 additions and 1 deletions
+1
View File
@@ -17,6 +17,7 @@ class PostFactory extends Factory
'content' => $this->faker->paragraph(),
'tags' => $this->faker->words(),
'title' => $this->faker->sentence(),
'rating' => $this->faker->numberBetween(1, 10),
];
}
}
@@ -13,6 +13,7 @@ return new class () extends Migration {
$table->text('content')->nullable();
$table->json('tags')->nullable();
$table->string('title');
$table->unsignedTinyInteger('rating')->default(0);
$table->timestamps();
});
}
@@ -26,6 +26,9 @@ class PostResource extends Resource
->relationship('author', 'name')
->required(),
Forms\Components\TagsInput::make('tags'),
Forms\Components\TextInput::make('rating')
->numeric()
->required(),
]);
}
@@ -0,0 +1,64 @@
<?php
namespace Filament\Tests\Admin\Fixtures\Resources;
use Filament\Forms;
use Filament\Resources\Form;
use Filament\Resources\Resource;
use Filament\Resources\Table;
use Filament\Tables;
use Filament\Tests\Admin\Fixtures\Resources\UserResource\Pages;
use Filament\Tests\Models\User;
class UserResource extends Resource
{
protected static ?string $model = User::class;
protected static ?string $recordTitleAttribute = 'name';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')->required(),
Forms\Components\TextInput::make('email')->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name'),
Tables\Columns\TextColumn::make('email'),
Tables\Columns\TextColumn::make('posts_exists')
->exists('posts')
->label('Has Posts'),
Tables\Columns\TextColumn::make('posts_count')
->counts('posts')
->label('# Posts'),
Tables\Columns\TextColumn::make('posts_avg_rating')
->avg('posts', 'rating')
->label('Posts Avg. Rating'),
Tables\Columns\TextColumn::make('posts_max_rating')
->max('posts', 'rating')
->label('Posts Max. Rating'),
Tables\Columns\TextColumn::make('posts_min_rating')
->min('posts', 'rating')
->label('Posts Min. Rating'),
Tables\Columns\TextColumn::make('posts_sum_rating')
->sum('posts', 'rating')
->label('Posts Rating Sum'),
]);
}
public static function getPages(): array
{
return [
'index' => Pages\ListUsers::route('/'),
'create' => Pages\CreateUser::route('/create'),
'view' => Pages\ViewUser::route('/{record}'),
'edit' => Pages\EditUser::route('/{record}/edit'),
];
}
}
@@ -0,0 +1,11 @@
<?php
namespace Filament\Tests\Admin\Fixtures\Resources\UserResource\Pages;
use Filament\Resources\Pages\CreateRecord;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
class CreateUser extends CreateRecord
{
protected static string $resource = UserResource::class;
}
@@ -0,0 +1,11 @@
<?php
namespace Filament\Tests\Admin\Fixtures\Resources\UserResource\Pages;
use Filament\Resources\Pages\EditRecord;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
class EditUser extends EditRecord
{
protected static string $resource = UserResource::class;
}
@@ -0,0 +1,11 @@
<?php
namespace Filament\Tests\Admin\Fixtures\Resources\UserResource\Pages;
use Filament\Resources\Pages\ListRecords;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
class ListUsers extends ListRecords
{
protected static string $resource = UserResource::class;
}
@@ -0,0 +1,11 @@
<?php
namespace Filament\Tests\Admin\Fixtures\Resources\UserResource\Pages;
use Filament\Resources\Pages\ViewRecord;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
class ViewUser extends ViewRecord
{
protected static string $resource = UserResource::class;
}
@@ -19,6 +19,7 @@ it('can create', function () {
->set('data.content', $newData->content)
->set('data.tags', $newData->tags)
->set('data.title', $newData->title)
->set('data.rating', $newData->rating)
->call('create');
$this->assertDatabaseHas(Post::class, [
@@ -26,6 +27,7 @@ it('can create', function () {
'content' => $newData->content,
'tags' => json_encode($newData->tags),
'title' => $newData->title,
'rating' => $newData->rating,
]);
});
@@ -1,10 +1,15 @@
<?php
use Filament\Tests\Admin\Fixtures\Resources\PostResource;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
use Filament\Tests\Admin\Resources\TestCase;
uses(TestCase::class);
it('can render page', function () {
it('can render posts page', function () {
$this->get(PostResource::getUrl('index'))->assertSuccessful();
});
it('can render users page', function () {
$this->get(UserResource::getUrl('index'))->assertSuccessful();
});
@@ -4,6 +4,7 @@ namespace Filament\Tests\Admin\Resources;
use Filament\PluginServiceProvider;
use Filament\Tests\Admin\Fixtures\Resources\PostResource;
use Filament\Tests\Admin\Fixtures\Resources\UserResource;
class ResourcesServiceProvider extends PluginServiceProvider
{
@@ -13,6 +14,7 @@ class ResourcesServiceProvider extends PluginServiceProvider
{
return [
PostResource::class,
UserResource::class,
];
}
}
+6
View File
@@ -5,6 +5,7 @@ namespace Filament\Tests\Models;
use Filament\Models\Contracts\FilamentUser;
use Filament\Tests\Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements FilamentUser
@@ -23,6 +24,11 @@ class User extends Authenticatable implements FilamentUser
return true;
}
public function posts(): HasMany
{
return $this->hasMany(Post::class, 'author_id');
}
protected static function newFactory()
{
return UserFactory::new();