PHP code example of noj / fabrica

1. Go to this page and download the library: Download noj/fabrica library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

noj / fabrica example snippets



ca::loadFactories([__DIR__ . '/factories']);

Fabrica::define(User::class, function () {
    return [
        'username' => 'user123',
        'firstName' => 'Test',
        'lastName' => 'User',
    ];
});

$user = Fabrica::create(User::class);

// Check properties have been set
assertEquals('user123', $user->username);
assertEquals('Test', $user->firstName);
assertEquals('User', $user->lastName);

Fabrica::define(User::class, function () {
    return [
        '@setUsername' => 'user123',
        '@setFirstName' => 'Test',
        '@setLastName' => 'User',
    ];
});

'@addPermission*' => ['USER', 'ADMIN'],

/// UserFactory.php
Fabrica::define(User::class, function () {
    return [
        'username' => 'user123',
        'firstName' => 'Test',
        'lastName' => 'User',
        '@setAge' => 47,
    ];
});

/// UserTest.php
$user = Fabrica::create(User::class, function () {
    return [
        'firstName' => 'Another',
        '@setAge' => 24,
    ];
});

assertEquals('user1223', $user->username);
assertEquals('Another', $user->firstName);
assertEquals('User', $user->lastName);
assertEquals(24, $user->getAge());

$users = Fabrica::createMany(User::class, 3);

Fabrica::define(Comment::class, function () {
    return [
        'title' => 'A test comment',
        'body' => 'This is a test',
        'author' => Fabrica::create(User::class),
    ];
});

$comment = Fabrica::create(Comment::class);

assertInstanceOf(User::class, $comment->user);
assertEquals('user123', $comment->user->username);

Fabrica::define(User::class, function () {
    return [
        '@setUsername' => 'user123',
        '@setFirstName' => 'Test',
        '@setLastName' => 'User',
        '@addComment' => Fabrica::create(Comment::class)
    ];
});

Fabrica::define(User::class, function () {
    return [
        'comments' => Fabrica::createMany(Comment::class, 3),

        // or if you have a setter method, use the `*` suffix to call the method
        // once for each element of the array
        '@addComment*' => Fabrica::createMany(Comment::class, 3),
    ];
});

Fabrica::define(Comment::class, function () {
    return [
        'user' => Fabrica::create(User::class),
        'userFirstName' => Fabrica::property('user.firstName'),
    ];
});

$comment = Fabrica::create(Comment::class, function () {
    return [
        'author.firstName' => 'John'
    ];
});

assertEquals('user123', $comment->user->username);
assertEquals('John', $comment->user->firstName);

$user = Fabrica::create(User::class, function () {
    return [
        'comments.1.title' => 'Only the 2nd comment has this title'
    ];
});

assertEquals('A test comment', $user->comments[0]->title);
assertEquals('Only the 2nd comment has this title', $user->comments[1]->title);

$user = Fabrica::create(User::class, function () {
    return [
        'comments.*.title' => 'Each comment now has this title'
    ];
});

foreach ($user->comments as $comment) {
    assertEquals('Each comment now has this title', $comment->title);
}

Fabrica::define(User::class, function () {
    return [
        'username' => 'bannedUser',
        'firstName' => 'Test',
        'lastName' => 'User',
    ];
})->type('banned');

$normalUser = Fabrica::create(User::class);
$bannedUser = Fabrica::create(User::class, 'banned');
$bannedUser2 = Fabrica::create(User::class, 'banned', function () {
    return ['firstName' => 'banned'];
});

Fabrica::define(User::class, function () {
    return [
        'username' => 'bannedUser'
    ];
})->type('banned')->extends(User::class);

$bannedUser = Fabrica::create(User::class, 'banned');
assertEquals('bannedUser', $bannedUser->username);
assertEquals('Test', $bannedUser->firstName);
assertEquals('User', $bannedUser->lastName);

Fabrica::define(User::class, function () {
    return [
        'permanent' => true
    ];
})->type('permaBanned')->extends(User::class, 'banned);

Fabrica::setStore(new DoctrineStore($entityManager));

$entityManager = \Noj\Fabrica\Adapter\Doctrine\EntityManagerFactory::createSQLiteInMemory([__DIR__ . '/path/to/entities']);
Fabrica::setStore(new DoctrineStore($entityManager));

    class MyTest extends TestCase
    {
        use \Noj\Fabrica\Adapter\Doctrine\PHPUnit\NeedsDatabase;
    }
    

class MyTest extends TestCase
{
    use \Noj\Fabrica\Adapter\Doctrine\PHPUnit\DatabaseAssertions;
}

public function test_it_creates_a_user()
{
    (new UserCreator)->create('test');
    self::assertDatabaseContainsEntity(User::class, ['username' => 'test'])'
}

$faker = \Faker\Factory::create();
Fabrica::addDefineArgument($faker);

use Faker\Generator as Faker;

Fabrica::define(User::class, function (Faker $faker) {
    return [
        'firstName' => $faker->firstName,
        'lastName' => $faker->lastName,
        'email' => $faker->email,
    ];
});