Peace/t/00005-developer-model.t

109 lines
2.7 KiB
Perl

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.';
}