Skip to content

Commit

Permalink
ModelResolver as a service
Browse files Browse the repository at this point in the history
  • Loading branch information
olvlvl committed Feb 27, 2023
1 parent 181a3e3 commit 75d2e82
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 5 deletions.
1 change: 1 addition & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ None

- Added a `ConfigBuild`, to follow ICanBoogie/Config changes.
- Added the console commands `activerecord:connections:list` and `activerecord:models:list`, with aliases `activerecord:connections` and `activerecord:models` respectively.
- Configures `StaticModelResolver`.

### Backward Incompatible Changes

Expand Down
12 changes: 9 additions & 3 deletions config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,16 @@ services:
factory: [ ICanBoogie\Binding\ActiveRecord\Factory, build_connections ]
public: true # required by $app->connections

ICanBoogie\ActiveRecord\ModelProvider:
class: ICanBoogie\ActiveRecord\ModelCollection
ICanBoogie\ActiveRecord\ModelCollection:
factory: [ ICanBoogie\Binding\ActiveRecord\Factory, build_models ]
public: true # required by $app->models

ICanBoogie\ActiveRecord\ModelProvider:
alias: ICanBoogie\ActiveRecord\ModelCollection
public: true # required by StaticModelProvider

ICanBoogie\ActiveRecord\ModelResolver:
alias: ICanBoogie\ActiveRecord\ModelCollection
public: true # required by StaticModelResolver

# Console

Expand Down
10 changes: 10 additions & 0 deletions lib/Hooks.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
use ICanBoogie\ActiveRecord\ActiveRecordCache\RuntimeActiveRecordCache;
use ICanBoogie\ActiveRecord\Model;
use ICanBoogie\ActiveRecord\ModelProvider;
use ICanBoogie\ActiveRecord\ModelResolver;
use ICanBoogie\ActiveRecord\StaticModelResolver;
use ICanBoogie\Application;
use ICanBoogie\Validate\ValidationErrors;

Expand All @@ -40,6 +42,14 @@ public static function on_app_boot(Application\BootEvent $event): void

return $models->model_for_id($id);
});

StaticModelResolver::define(
static function () use ($app): ModelResolver {
static $resolver;

return $resolver ??= $app->service_for_class(ModelResolver::class);
}
);
}

/*
Expand Down
21 changes: 19 additions & 2 deletions tests/lib/ActiveRecordTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,36 @@

namespace Test\ICanBoogie\Binding\ActiveRecord;

use ICanBoogie\ActiveRecord\Model;
use ICanBoogie\Validate\ValidationErrors;
use PHPUnit\Framework\TestCase;
use Test\ICanBoogie\Binding\ActiveRecord\Acme\Article;
use Test\ICanBoogie\Binding\ActiveRecord\Acme\SampleRecord;

/**
* @small
*/
class ActiveRecordTest extends TestCase
final class ActiveRecordTest extends TestCase
{
public function test_validate()
public function test_validate(): void
{
$record = new SampleRecord();

$this->assertInstanceOf(ValidationErrors::class, $record->validate());
}

public function test_model_id(): void
{
$record = Article::from();

$this->assertEquals('articles', $record->model_id);
}

public function test_model(): void
{
$record = Article::from();

$this->assertInstanceOf(Model::class, $record->model);
$this->assertEquals('articles', $record->model->id);
}
}

0 comments on commit 75d2e82

Please sign in to comment.