Skip to content

Commit

Permalink
Update Unit Test
Browse files Browse the repository at this point in the history
  • Loading branch information
alvin0 committed Apr 4, 2023
1 parent 02abdf7 commit 9cf83ee
Showing 1 changed file with 106 additions and 69 deletions.
175 changes: 106 additions & 69 deletions tests/ModelTest.php
@@ -1,14 +1,17 @@
<?php

use Alvin0\RedisModel\Tests\Models\User;
use Illuminate\Support\Facades\Redis;

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

it('a user can be created without id', function ($userInput, $expect) {
User::destroy();
$user = User::create($userInput);

expect($user->name)->toEqual($expect['name']);
expect($user->email)->toEqual($expect['email']);

})->with([
[
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
Expand All @@ -25,29 +28,10 @@
]);

it('can insert multiple users without id', function ($data) {
User::destroy();

User::insert($data);

$users = User::get();
expect($users->count())->toBe(10);

foreach ($data as $userInput) {
$user = User::where('email', $userInput['email'])->first();
expect($user->id)->toBeString();
expect($user->name)->toEqual($userInput['name']);
expect($user->email)->toEqual($userInput['email']);
}

User::where('email', 'user1@example.com')->destroy();

$user = expect(User::count())->toBe(9);

User::destroy();

$users = User::get();

expect($users->count())->toBe(0);
})->with([
function () {
$data = [];
Expand All @@ -63,11 +47,43 @@ function () {
}
]);

it('a user can be force created', function ($userInput, $expect) {
$user = User::create($userInput);

expect($user->name)->toEqual($expect['name']);
expect($user->email)->toEqual($expect['email']);

expect(User::count())->toBe(1);

$userForceCreate = User::forceCreate([
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
]);

expect($userForceCreate->id)->toEqual($user['id']);
expect($userForceCreate->name)->toEqual($user['name']);
expect($userForceCreate->email)->toEqual($user['email']);

expect(User::count())->toBe(1);
})->with([
[
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
],
[
['name' => 'Luke Downing', 'email' => 'luke_downing@example.com'],
['name' => 'Luke Downing', 'email' => 'luke_downing@example.com'],
],
[
['name' => 'Freek Van Der Herten', 'email' => 'freek_van_der@example.com'],
['name' => 'Freek Van Der Herten', 'email' => 'freek_van_der@example.com'],
],
]);

it('a user can be created, updated, and deleted', function ($userInput, $expect) {
User::destroy();
$user = User::create($userInput);

expect($user->id)->toEqual($userInput['id']);
expect($user->name)->toEqual($expect['name']);
expect($user->email)->toEqual($expect['email']);

Expand All @@ -89,73 +105,80 @@ function () {
expect($deletedUser)->toBeNull();
})->with([
[
['id' => 1, 'name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
],
[
['id' => 2, 'name' => 'Luke Downing', 'email' => 'luke_downing@example.com'],
['name' => 'Luke Downing', 'email' => 'luke_downing@example.com'],
['name' => 'Luke Downing', 'email' => 'luke_downing@example.com'],
],
[
['id' => 3, 'name' => 'Freek Van Der Herten', 'email' => 'freek_van_der@example.com'],
['name' => 'Freek Van Der Herten', 'email' => 'freek_van_der@example.com'],
['name' => 'Freek Van Der Herten', 'email' => 'freek_van_der@example.com'],
],
]);

it('can retrieve all users', function ($setup, $clean) {
User::destroy();
$setup();
it('can retrieve all users', function ($setup) {
expect(User::all()->count())->toBeGreaterThan(0);
})->with([
[
function () {
$data = [];

$users = User::all();
expect($users->count())->toBeGreaterThan(0);
for ($i = 1; $i <= 10; $i++) {
$data[] = [
'name' => 'User ' . $i,
'email' => 'user' . $i . '@example.com',
];
}

$clean();
})->with([
return User::insert($data);
}
],
[
fn() => User::create(['id' => 1, 'name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com']),
fn() => User::find(1)->delete(),
],
]);

it('can retrieve a single user by ID', function ($setup, $clean) {
User::destroy();
$setup();
it('can retrieve a single user by ID', function ($createData, $expect) {
$createData();

$user = User::find(1);
expect($user->name)->toEqual('Nuno Maduro');
expect($user->email)->toEqual('nuno_naduro@example.com');

$clean();
expect($user->name)->toEqual($expect['name']);
expect($user->email)->toEqual($expect['email']);
})->with([
[
fn() => User::create(['id' => 1, 'name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com']),
fn() => User::find(1)->delete(),
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
],
[
fn() => User::create(['id' => 1, 'name' => 'Nuno Madurop', 'email' => 'nuno_nadurop@example.com']),
['name' => 'Nuno Madurop', 'email' => 'nuno_nadurop@example.com'],
],
]);

it('can retrieve users matching a given criteria', function ($setup, $clean) {
User::destroy();
$setup();
it('can retrieve users matching a given criteria', function ($createData, $expect) {
$createData();

$users = User::where('name', 'Nuno*')->get();
expect($users->count())->toBeGreaterThan(0);

foreach ($users as $user) {
expect($user->name)->toContain('Nuno Maduro');
expect($user->email)->toContain('nuno_naduro@example.com');
expect($user->name)->toContain($expect['name']);
expect($user->email)->toContain($expect['email']);
}

$clean();
})->with([
[
fn() => User::create(['id' => 1, 'name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com']),
fn() => User::find(1)->delete(),
['name' => 'Nuno Maduro', 'email' => 'nuno_naduro@example.com'],
],
[
fn() => User::create(['id' => 1, 'name' => 'Nuno Madurop', 'email' => 'nuno_nadurop@example.com']),
['name' => 'Nuno Madurop', 'email' => 'nuno_nadurop@example.com'],
],
]);

it('can insert multiple users and remove all', function ($data) {
User::destroy();

it('can insert multiple users', function ($data) {
User::insert($data);

$users = User::get();
Expand All @@ -167,15 +190,37 @@ function () {
expect($user->name)->toEqual($userInput['name']);
expect($user->email)->toEqual($userInput['email']);
}
})->with([
function () {
$data = [];

for ($i = 1; $i <= 10; $i++) {
$data[] = [
'name' => 'User ' . $i,
'email' => 'user' . $i . '@example.com',
'id' => $i,
];
}

return $data;
}
]);

User::where('email', 'user1@example.com')->destroy();
it('can remove multiple users', function ($data) {
User::insert($data);

$users = User::get();
expect($users->count())->toBe(10);

User::where('email', 'user' . rand(1, 3) . '@example.com')->destroy();
User::where('email', 'user' . rand(4, 6) . '@example.com')->destroy();
User::where('email', 'user' . rand(7, 10) . '@example.com')->destroy();

expect(User::count())->toBe(9);
expect(User::count())->toBe(7);

User::destroy();

$users = User::get();
expect($users->count())->toBe(0);
expect(User::get()->count())->toBe(0);
})->with([
function () {
$data = [];
Expand All @@ -193,16 +238,11 @@ function () {
]);

it('it can insert multiple users with transaction', function ($data) {
User::destroy();

User::transaction(function ($conTransaction) use ($data) {
User::insert($data, $conTransaction);
});

$users = User::get();
expect($users->count())->toBe(10);

User::destroy();
expect(User::get()->count())->toBe(10);
})->with([
function () {
$data = [];
Expand All @@ -220,16 +260,13 @@ function () {
]);

it('it cant insert multiple users with transaction', function ($data) {

User::transaction(function ($conTransaction) use ($data) {
User::insert($data, $conTransaction);

throw new \Exception('Something went wrong');
});

$users = User::get();
expect($users->count())->toBe(0);

User::destroy();
expect(User::get()->count())->toBe(0);
})->with([
function () {
$data = [];
Expand All @@ -244,4 +281,4 @@ function () {

return $data;
}
]);
]);

0 comments on commit 9cf83ee

Please sign in to comment.