use v5.30.0; use strict; use warnings; use Test::Most tests => 6; use Test::MockModule; use DBI; use Peace::Model::Application; use Peace::Test::Mock::Model::Application; BEGIN { use_ok 'Peace::Model::Developer'; } { ## GIVEN my $secret_bcrypt = 'hola'; my $name = 'Larry'; my $surname = 'Wall'; my $email = 'larry@perl.org'; my $country = 'US'; my $verified = 0; ## WHEN my $developer = Peace::Model::Developer->new( secret_bcrypt => $secret_bcrypt, name => $name, surname => $surname, email => $email, country => $country, verified => $verified, ); ## THEN ok $developer->isa('Peace::Model::Developer'), 'Instanced developer is made of Peace::Model::Developer.'; is $developer->secret_bcrypt, $secret_bcrypt, 'Secret is correctly setup'; is $developer->uuid, undef, 'Uuid is undef.'; } { ## GIVEN my $uuid = 'example'; my $secret_bcrypt = 'hola'; my $name = 'Larry'; my $surname = 'Wall'; my $email = 'larry@perl.org'; my $country = 'US'; my $verified = 0; my $developer = Peace::Model::Developer->new( secret_bcrypt => $secret_bcrypt, name => $name, surname => $surname, email => $email, country => $country, verified => $verified ); ## WHEN $developer->uuid($uuid); ## THEN is $developer->uuid, $uuid, 'Uuid can be set.'; } { ## GIVEN my $application_dao_mock = Test::MockModule->new('Peace::DAO::Application'); ### Developer data my $uuid = 'example'; my $secret_bcrypt = 'hola'; my $name = 'Larry'; my $surname = 'Wall'; my $email = 'larry@perl.org'; my $country = 'US'; my $verified = 0; my $dbh = DBI->connect( 'DBI:Mock:', '', '' ); my $developer = Peace::Model::Developer->new( secret_bcrypt => $secret_bcrypt, name => $name, surname => $surname, email => $email, country => $country, verified => $verified, dbh => $dbh, ); my $applications = [ Peace::Test::Mock::Model::Application->new, Peace::Test::Mock::Model::Application->new, ]; $application_dao_mock->mock( recover_by_developer => sub { return $applications; } ); ## WHEN my $new_applications = $developer->applications; ## THEN is_deeply $new_applications, $applications, 'Applications are correctly recovered from the developer.'; }