Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
stevebauman committed Sep 26, 2024
1 parent 3c19f63 commit 23c2079
Show file tree
Hide file tree
Showing 6 changed files with 183 additions and 0 deletions.
51 changes: 51 additions & 0 deletions tests/Fixtures/ModelStubWithEventListeners.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace DirectoryTree\ActiveRedis\Tests\Fixtures;

use DirectoryTree\ActiveRedis\Model;

class ModelStubWithEventListeners extends Model
{
public static array $eventsCalled = [];

public static function boot(): void
{
parent::boot();

static::retrieved(function ($model) {
static::$eventsCalled[] = 'retrieved';
});

static::creating(function ($model) {
static::$eventsCalled[] = 'creating';
});

static::created(function ($model) {
static::$eventsCalled[] = 'created';
});

static::updating(function ($model) {
static::$eventsCalled[] = 'updating';
});

static::updated(function ($model) {
static::$eventsCalled[] = 'updated';
});

static::saving(function ($model) {
static::$eventsCalled[] = 'saving';
});

static::saved(function ($model) {
static::$eventsCalled[] = 'saved';
});

static::deleting(function ($model) {
static::$eventsCalled[] = 'deleting';
});

static::deleted(function ($model) {
static::$eventsCalled[] = 'deleted';
});
}
}
10 changes: 10 additions & 0 deletions tests/Fixtures/ModelStubWithTraitInitializer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace DirectoryTree\ActiveRedis\Tests\Fixtures;

use DirectoryTree\ActiveRedis\Model;

class ModelStubWithTraitInitializer extends Model
{
use ModelTraitStub;
}
13 changes: 13 additions & 0 deletions tests/Fixtures/ModelTraitStub.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace DirectoryTree\ActiveRedis\Tests\Fixtures;

trait ModelTraitStub
{
public static bool $traitInitialized = false;

protected static function bootModelTraitStub(): void
{
static::$traitInitialized = true;
}
}
84 changes: 84 additions & 0 deletions tests/ModelEventTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php

use DirectoryTree\ActiveRedis\Tests\Fixtures\ModelStubWithEventListeners;
use Illuminate\Support\Facades\Redis;

beforeEach(function () {
Redis::flushall();

// Clear the events called array before each test.
ModelStubWithEventListeners::$eventsCalled = [];
});

it('fires events on create', function () {
ModelStubWithEventListeners::create();

expect(ModelStubWithEventListeners::$eventsCalled)->toBe([
'saving',
'creating',
'created',
'saved',
]);
});

it('fires events on update', function () {
$model = ModelStubWithEventListeners::create();

ModelStubWithEventListeners::$eventsCalled = [];

$model->update(['name' => 'test']);

expect(ModelStubWithEventListeners::$eventsCalled)->toBe([
'saving',
'updating',
'updated',
'saved',
]);
});

it('fires events on delete', function () {
$model = ModelStubWithEventListeners::create();

ModelStubWithEventListeners::$eventsCalled = [];

$model->delete();

expect(ModelStubWithEventListeners::$eventsCalled)->toBe([
'deleting',
'deleted',
]);
});

it('fires events on retrieved', function () {
ModelStubWithEventListeners::create();

ModelStubWithEventListeners::$eventsCalled = [];

ModelStubWithEventListeners::first();

expect(ModelStubWithEventListeners::$eventsCalled)->toBe(['retrieved']);
});

it('fires events on many retrieved', function () {
ModelStubWithEventListeners::create();
ModelStubWithEventListeners::create();

ModelStubWithEventListeners::$eventsCalled = [];

ModelStubWithEventListeners::all();

expect(ModelStubWithEventListeners::$eventsCalled)->toBe(['retrieved', 'retrieved']);
});

it('does not fire updated and saved when model is saved without changes', function () {
$model = ModelStubWithEventListeners::create();

ModelStubWithEventListeners::$eventsCalled = [];

$model->save();

expect(ModelStubWithEventListeners::$eventsCalled)->toBe([
'saving',
'updating',
]);
});
13 changes: 13 additions & 0 deletions tests/ModelTraitTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace DirectoryTree\ActiveRedis\Tests;

use DirectoryTree\ActiveRedis\Tests\Fixtures\ModelStubWithTraitInitializer;

it('initializes the model trait', function () {
ModelStubWithTraitInitializer::$traitInitialized = false;

new ModelStubWithTraitInitializer;

expect(ModelStubWithTraitInitializer::$traitInitialized)->toBeTrue();
});
12 changes: 12 additions & 0 deletions tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,22 @@

namespace DirectoryTree\ActiveRedis\Tests;

use DirectoryTree\ActiveRedis\ActiveRedisServiceProvider;
use Orchestra\Testbench\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
/**
* Get package providers.
*/
protected function getPackageProviders($app): array
{
return [ActiveRedisServiceProvider::class];
}

/**
* Define environment setup.
*/
protected function defineEnvironment($app): void
{
$app['config']->set('database.redis.options.prefix', null);
Expand Down

0 comments on commit 23c2079

Please sign in to comment.