Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mcoil.corals.io/vendor/jsdecena/baserepo/tests/Unit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mcoil.corals.io/vendor/jsdecena/baserepo/tests/Unit/UserUnitTest.php
<?php

namespace Jsdecena\Baserepo\Test\Unit;

use Illuminate\Database\Eloquent\Collection;
use Jsdecena\Baserepo\Models\User;
use Jsdecena\Baserepo\Repositories\UserRepository;
use Jsdecena\Baserepo\Test\TestCase;
use Jsdecena\Baserepo\Transformers\UserTransformer;

class UserUnitTest extends TestCase
{
    /** @test */
    public function it_should_return_all_collection()
    {
        factory(User::class, 10)->create();

        $user = factory(User::class)->create();

        $userRepo = new UserRepository(new User);

        $builder = User::where('name', $user->name);

        $data = $userRepo->getData($builder, new UserTransformer, false);

        $this->assertInstanceOf(Collection::class, $data);
    }

    /** @test */
    public function it_can_paginate_collection_with_cursor()
    {
        factory(User::class, 10)->create();

        $user = factory(User::class)->create();

        $userRepo = new UserRepository(new User);

        $builder = User::where('name', $user->name);

        $data = $userRepo->getData($builder, new UserTransformer);

        $json = json_encode(
            [
                'data' => [
                    [
                        'id' => $user->id,
                        'name' => $user->name,
                        'email' => $user->email
                    ]
                ],
                'meta' => [
                    'cursor' => [
                        'current' => null,
                        'prev' => null,
                        'next' => User::all()->count(),
                        'count' => 1
                    ]
                ]
            ]
        );

        $this->assertJsonStringEqualsJsonString($json, json_encode($data));
    }


    /** @test */
    public function it_can_transform_a_model_collection()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);
        $collection = $userRepo->transformCollection(User::all(), new UserTransformer, User::RESOURCE_KEY);

        $json = json_encode(
            [
                'data' => [
                    [
                        'type' => User::RESOURCE_KEY,
                        'id' => "$user->id",
                        'attributes' => $data,
                        'links' => [
                            'self' => config('app.url') .'/users/' . $user->id
                        ]
                    ]
                ]
            ]
        );

        $this->assertJsonStringEqualsJsonString($json, json_encode($collection));
    }

    /** @test */
    public function it_can_transform_a_single_model()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);
        $item = $userRepo->transformItem($user, new UserTransformer, User::RESOURCE_KEY);

        $json = json_encode(
            [
                'data' => [
                    'type' => User::RESOURCE_KEY,
                    'id' => "$user->id",
                    'attributes' => $data,
                    'links' => [
                        'self' => config('app.url') .'/users/' . $user->id
                    ]
                ]
            ]
        );

        $this->assertJsonStringEqualsJsonString($json, json_encode($item));
    }

    /** @test */
    public function it_can_transform_paginated_collection()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ];

        factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);

        $perPage = 10;
        $transform = $userRepo->processPaginatedResults(User::paginate($perPage), new UserTransformer, 'users');
        $transformData = $transform->toArray();
        $response = $transformData['data'];

        collect($response)->each(function ($item) use ($data) {
            $this->assertEquals($data['name'], $item['attributes']['name']);
            $this->assertEquals($data['email'], $item['attributes']['email']);
        });

        $paginate = $transformData['meta']['pagination'];

        $this->assertEquals(1, $paginate['total']);
        $this->assertEquals(1, $paginate['count']);
        $this->assertEquals($perPage, $paginate['per_page']);
        $this->assertEquals(1, $paginate['current_page']);
        $this->assertEquals(1, $paginate['total_pages']);
    }

    /** @test */
    public function it_can_transform_user_collection_and_paginate_it()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ];

        factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);

        $transform = $userRepo->processCollectionTransformer($userRepo->listUsers(), new UserTransformer, 'users');
        $transformData = $transform->toArray();

        $response = $transformData['data'];

        collect($response)->each(function ($item) use ($data) {
            $this->assertEquals($data['name'], $item['attributes']['name']);
            $this->assertEquals($data['email'], $item['attributes']['email']);
        });

        $paginate = $transformData['meta']['pagination'];

        $this->assertEquals(1, $paginate['total']);
        $this->assertEquals(1, $paginate['count']);
        $this->assertEquals(25, $paginate['per_page']);
        $this->assertEquals(1, $paginate['current_page']);
        $this->assertEquals(1, $paginate['total_pages']);
    }

    /** @test */
    public function it_can_transform_the_user()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);
        $transform = $userRepo->processItemTransformer($user, new UserTransformer, 'users');

        $response = $transform->toArray()['data'];

        $this->assertEquals($response['type'], 'users');
        $this->assertEquals($response['attributes']['name'], $data['name']);
        $this->assertEquals($response['attributes']['email'], $data['email']);
    }
    
    /** @test */
    public function it_can_list_the_users()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);
        $users = $userRepo->listUsers();

        $users->each(function (User $item) use ($user) {
            $this->assertEquals($user->name, $item->name);
            $this->assertEquals($user->email, $item->email);
        });
    }

    /** @test */
    public function it_can_delete_the_user()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository($user);
        $deleted = $userRepo->deleteUser();

        $this->assertTrue($deleted);
    }

    /** @test */
    public function it_can_update_the_user()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret'
        ];

        $user = factory(User::class)->create($data);

        $update = [
            'name' => 'Jane Doe'
        ];

        $userRepo = new UserRepository($user);
        $updated = $userRepo->updateUser($update);

        $this->assertTrue($updated);
    }

    /** @test */
    public function it_can_show_the_user()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret'
        ];

        $user = factory(User::class)->create($data);

        $userRepo = new UserRepository(new User);
        $found = $userRepo->findUserById($user->id);

        $this->assertInstanceOf(User::class, $found);
        $this->assertEquals($user->name, $found->name);
        $this->assertEquals($user->email, $found->email);
    }
    
    /** @test */
    public function it_can_create_a_user()
    {
        $data = [
            'name' => 'John Doe',
            'email' => '[email protected]',
            'password' => 'secret'
        ];

        $userRepo = new UserRepository(new User);
        $user = $userRepo->createUser($data);

        $this->assertInstanceOf(User::class, $user);
        $this->assertEquals($data['name'], $user->name);
        $this->assertEquals($data['email'], $user->email);
    }
}

Spamworldpro Mini