Skip to content

Commit

Permalink
Refactor and simplify tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
mdpoulter committed Jan 25, 2021
1 parent 07e47d8 commit 2f5eaff
Show file tree
Hide file tree
Showing 23 changed files with 631 additions and 559 deletions.
3 changes: 2 additions & 1 deletion phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
</coverage>
<testsuites>
<testsuite name="Simple Squid Test Suite">
<directory>tests</directory>
<directory>tests/Fields</directory>
<directory>tests/Filters</directory>
</testsuite>
</testsuites>
<php>
Expand Down
23 changes: 0 additions & 23 deletions tests/BooleanFilterTest.php

This file was deleted.

8 changes: 5 additions & 3 deletions tests/Examples/FlaggedEnum.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
*/
final class FlaggedEnum extends BaseFlaggedEnum
{
const ReadComments = 1 << 0;
const WriteComments = 1 << 1;
const EditComments = 1 << 2;
const ReadComments = 1 << 0;

const WriteComments = 1 << 1;

const EditComments = 1 << 2;
}
59 changes: 0 additions & 59 deletions tests/FieldTest.php

This file was deleted.

59 changes: 59 additions & 0 deletions tests/Fields/FieldTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

namespace SimpleSquid\Nova\Fields\Enum\Tests\Fields;

use BenSampo\Enum\Rules\EnumValue;
use SimpleSquid\Nova\Fields\Enum\Enum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\IntegerEnum;
use SimpleSquid\Nova\Fields\Enum\Tests\TestCase;

class FieldTest extends TestCase
{
private $field;

protected function setUp(): void
{
parent::setUp();

$this->setUpDatabase($this->app);

$this->field = Enum::make('Enum')->attach(IntegerEnum::class);
}

/** @test */
public function it_starts_with_no_options_and_rules()
{
$field = Enum::make('Enum');

$this->assertArrayNotHasKey('options', $field->meta);

$this->assertEmpty($field->rules);
}

/** @test */
public function it_allows_an_enum_to_be_attached()
{
$this->assertArrayHasKey('options', $this->field->meta);
}

/** @test */
public function it_adds_correct_rules()
{
$this->assertContains('required', $this->field->rules);

$this->assertContainsEquals(new EnumValue(IntegerEnum::class, false), $this->field->rules);
}

/** @test */
public function it_displays_enum_options()
{
$this->assertCount(count(IntegerEnum::getValues()), $this->field->meta['options']);

foreach (IntegerEnum::getValues() as $enum) {
$this->assertContains([
'label' => IntegerEnum::getDescription($enum),
'value' => $enum
], $this->field->meta['options']);
}
}
}
18 changes: 10 additions & 8 deletions tests/FlaggedFieldTest.php → tests/Fields/FlaggedFieldTest.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php

namespace SimpleSquid\Nova\Fields\Enum\Tests;
namespace SimpleSquid\Nova\Fields\Enum\Tests\Fields;

use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\NovaServiceProvider;
use SimpleSquid\Nova\Fields\Enum\FlaggedEnum as FlaggedEnumField;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\FlaggedEnum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\FlaggedModel;
use SimpleSquid\Nova\Fields\Enum\Tests\TestCase;

class FlaggedFieldTest extends TestCase
{
Expand All @@ -24,8 +24,6 @@ protected function setUp(): void
{
parent::setUp();

app()->register(NovaServiceProvider::class);

$this->setUpDatabase($this->app);

$this->field = FlaggedEnumField::make('Enum')->attach(FlaggedEnum::class);
Expand Down Expand Up @@ -56,9 +54,13 @@ public function it_has_no_value_text()
/** @test */
public function it_displays_enum_options()
{
$this->assertCount(3, $this->field->options);
$this->assertCount(count(FlaggedEnum::getValues()) - 1, $this->field->options);

foreach (FlaggedEnum::getValues() as $enum) {
if ($enum === FlaggedEnum::None) {
continue;
}

foreach (array_keys($this->values) as $enum) {
$this->assertContains([
'label' => FlaggedEnum::getDescription($enum),
'name' => $enum
Expand All @@ -71,7 +73,7 @@ public function it_resolves_enum_values()
{
$this->field->resolve($this->model);

$this->assertCount(3, $this->field->value);
$this->assertCount(count(FlaggedEnum::getValues()) - 1, $this->field->value);

foreach (array_keys($this->values) as $enum) {
$this->assertEquals(false, $this->field->value[$enum]);
Expand All @@ -81,7 +83,7 @@ public function it_resolves_enum_values()

$this->field->resolve($this->model);

$this->assertCount(3, $this->field->value);
$this->assertCount(count(FlaggedEnum::getValues()) - 1, $this->field->value);

foreach ($this->values as $enum => $value) {
$this->assertEquals($value, $this->field->value[$enum]);
Expand Down
60 changes: 60 additions & 0 deletions tests/Fields/IntegerFieldTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace SimpleSquid\Nova\Fields\Enum\Tests\Fields;

use Laravel\Nova\Http\Requests\NovaRequest;
use SimpleSquid\Nova\Fields\Enum\Enum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\IntegerEnum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\IntegerModel;
use SimpleSquid\Nova\Fields\Enum\Tests\TestCase;

class IntegerFieldTest extends TestCase
{
private $field;

private $model;

protected function setUp(): void
{
parent::setUp();

$this->setUpDatabase($this->app);

$this->field = Enum::make('Enum')->attach(IntegerEnum::class);

$this->model = IntegerModel::create(['enum' => IntegerEnum::Moderator]);
}

/** @test */
public function it_resolves_enum_value()
{
$this->field->resolve($this->model);

$this->assertSame(IntegerEnum::Moderator, $this->field->value);
}

/** @test */
public function it_displays_enum_description()
{
$this->field->resolveForDisplay($this->model);

$this->assertSame(IntegerEnum::Moderator()->description, $this->field->value);
}

/** @test */
public function it_fills_database_with_enum_value()
{
$request = new NovaRequest();
$request->query->add(['enum' => IntegerEnum::Subscriber]);

$this->field->fill($request, $this->model);

$this->assertDatabaseHas('example_models', ['enum' => IntegerEnum::Moderator]);

$this->model->save();

$this->assertDatabaseHas('example_models', ['enum' => IntegerEnum::Subscriber]);

$this->assertDatabaseMissing('example_models', ['enum' => IntegerEnum::Moderator]);
}
}
60 changes: 60 additions & 0 deletions tests/Fields/StringFieldTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace SimpleSquid\Nova\Fields\Enum\Tests\Fields;

use Laravel\Nova\Http\Requests\NovaRequest;
use SimpleSquid\Nova\Fields\Enum\Enum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\StringEnum;
use SimpleSquid\Nova\Fields\Enum\Tests\Examples\StringModel;
use SimpleSquid\Nova\Fields\Enum\Tests\TestCase;

class StringFieldTest extends TestCase
{
private $field;

private $model;

protected function setUp(): void
{
parent::setUp();

$this->setUpDatabase($this->app, 'string');

$this->field = Enum::make('Enum')->attach(StringEnum::class);

$this->model = StringModel::create(['enum' => StringEnum::Moderator]);
}

/** @test */
public function it_resolves_enum_value()
{
$this->field->resolve($this->model);

$this->assertSame(StringEnum::Moderator, $this->field->value);
}

/** @test */
public function it_displays_enum_description()
{
$this->field->resolveForDisplay($this->model);

$this->assertSame(StringEnum::Moderator()->description, $this->field->value);
}

/** @test */
public function it_fills_database_with_enum_value()
{
$request = new NovaRequest();
$request->query->add(['enum' => StringEnum::Subscriber]);

$this->field->fill($request, $this->model);

$this->assertDatabaseHas('example_models', ['enum' => StringEnum::Moderator]);

$this->model->save();

$this->assertDatabaseHas('example_models', ['enum' => StringEnum::Subscriber]);

$this->assertDatabaseMissing('example_models', ['enum' => StringEnum::Moderator]);
}
}
23 changes: 0 additions & 23 deletions tests/FilterTest.php

This file was deleted.

Loading

0 comments on commit 2f5eaff

Please sign in to comment.