Skip to content

Commit

Permalink
- bismillah
Browse files Browse the repository at this point in the history
  • Loading branch information
Emre Akay committed Sep 7, 2024
1 parent cba9be3 commit 4f8e053
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 16 deletions.
4 changes: 0 additions & 4 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ jobs:

name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}


services:
mysql:
image: mysql:8.0
Expand All @@ -44,10 +43,7 @@ jobs:
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3




steps:

- name: Verify Mysql connection
run: |
mysql --version
Expand Down
16 changes: 16 additions & 0 deletions tests/Models/ExampleShapelyFlexyModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace AuroraWebSoftware\FlexyField\Tests\Models;

use AuroraWebSoftware\FlexyField\Contracts\FlexyModelContract;
use AuroraWebSoftware\FlexyField\Traits\Flexy;
use Illuminate\Database\Eloquent\Model;

class ExampleShapelyFlexyModel extends Model implements FlexyModelContract
{
use Flexy;

protected $table = 'ff_example_flexy_models';

protected $guarded = [];
}
27 changes: 15 additions & 12 deletions tests/PackageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use AuroraWebSoftware\FlexyField\Exceptions\FlexyFieldIsNotInShape;
use AuroraWebSoftware\FlexyField\Models\Shape;
use AuroraWebSoftware\FlexyField\Tests\Models\ExampleFlexyModel;
use AuroraWebSoftware\FlexyField\Tests\Models\ExampleShapelyFlexyModel;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schema;
Expand Down Expand Up @@ -81,40 +82,42 @@
});

it('can get exception when shape is mandatory', function () {
$flexyModel1 = ExampleFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleFlexyModel::$hasShape = true;
$flexyModel1 = ExampleShapelyFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleShapelyFlexyModel::$hasShape = true;
$flexyModel1->flexy->a = '1';
$flexyModel1->save();
})->expectException(FlexyFieldIsNotInShape::class);

it('can create shape for a model and save', function () {
$flexyModel1 = ExampleFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleFlexyModel::$hasShape = true;
$flexyModel1 = ExampleShapelyFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleShapelyFlexyModel::$hasShape = true;

ExampleFlexyModel::setFlexyShape('a', FlexyFieldType::STRING, 1);
ExampleShapelyFlexyModel::setFlexyShape('a', FlexyFieldType::STRING, 1);

$flexyModel1->flexy->a = 'a';
$flexyModel1->save();

expect(ExampleShapelyFlexyModel::getFlexyShape('a'))->toBeInstanceOf(Shape::class);
});

it('can create shape for a model and validate and throws', function () {
$flexyModel1 = ExampleFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleFlexyModel::$hasShape = true;
$flexyModel1 = ExampleShapelyFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleShapelyFlexyModel::$hasShape = true;

ExampleFlexyModel::setFlexyShape('a', FlexyFieldType::INTEGER, 1, 'numeric|max:1');
ExampleShapelyFlexyModel::setFlexyShape('a', FlexyFieldType::INTEGER, 1, 'numeric|max:1');

$flexyModel1->flexy->a = 'a';
$flexyModel1->save();
})->expectException(ValidationException::class);

it('can create shape for a model and validate and save', function () {
$flexyModel1 = ExampleFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleFlexyModel::$hasShape = true;
$flexyModel1 = ExampleShapelyFlexyModel::create(['name' => 'ExampleFlexyModel 1']);
ExampleShapelyFlexyModel::$hasShape = true;

ExampleFlexyModel::setFlexyShape('a', FlexyFieldType::INTEGER, 1, 'numeric|max:7');
ExampleShapelyFlexyModel::setFlexyShape('a', FlexyFieldType::INTEGER, 1, 'numeric|max:7');

$flexyModel1->flexy->a = 5;
$flexyModel1->save();

expect(ExampleFlexyModel::where('flexy_a', 5)->get())->toHaveCount(1);
expect(ExampleShapelyFlexyModel::where('flexy_a', 5)->get())->toHaveCount(1);
});

0 comments on commit 4f8e053

Please sign in to comment.