93 lines
2.6 KiB
Perl
93 lines
2.6 KiB
Perl
#!/usr/bin/env perl
|
|
use v5.34.1;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Data::Dumper;
|
|
|
|
use Test::Most tests => 9;
|
|
use JSON;
|
|
|
|
use L3TDE::Test::DB;
|
|
|
|
BEGIN {
|
|
use_ok 'L3TDE::Model';
|
|
}
|
|
|
|
package L3TDE::Test::1::Model {
|
|
use v5.34.1;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Moo;
|
|
|
|
with 'L3TDE::Model';
|
|
|
|
sub table { 'dummy_model' }
|
|
sub not_defaulted_fields { [qw/dummy1 dummy2 dummy3/] }
|
|
sub defaulted_fields { [qw/id/] }
|
|
sub jsonb_fields { [qw/data/] }
|
|
sub find_fields { [qw/dummy2 id/] }
|
|
sub id_fields { [qw/id/] }
|
|
has [qw/dummy1 dummy2 dummy3 id data/] => (
|
|
is => 'rw'
|
|
);
|
|
}
|
|
|
|
{
|
|
my $test_db = L3TDE::Test::DB->mock;
|
|
my $dbh = $test_db->dbh;
|
|
my $result = {
|
|
id => 1,
|
|
dummy1 => 'foo',
|
|
dummy2 => 'bar',
|
|
dummy3 => 'foobar',
|
|
data => encode_json( { foobar => 'json' } ),
|
|
};
|
|
my @keys = sort { $a cmp $b } keys %$result;
|
|
$dbh->{mock_add_resultset} = [ [@keys], [ $result->@{@keys} ] ];
|
|
my $dummy = L3TDE::Test::1::Model->create(
|
|
dummy1 => 'foo',
|
|
dummy2 => 'bar',
|
|
dummy3 => 'foobar',
|
|
data => { foobar => 'json' }
|
|
);
|
|
ok $dummy->isa('L3TDE::Test::1::Model'), 'This dummy is made of dummy';
|
|
my $history = $dbh->{mock_all_history};
|
|
is scalar @$history, 1, 'A create statement executed';
|
|
my $st = $history->[0];
|
|
is $st->statement,
|
|
'INSERT INTO dummy_model (dummy1,dummy2,dummy3,data) VALUES (?,?,?,?::jsonb) RETURNING dummy1,dummy2,dummy3,data,id;',
|
|
'Expected create query matches';
|
|
is_deeply [ 'foo', 'bar', 'foobar', '{"foobar":"json"}' ],
|
|
$st->bound_params, 'Bound create params match';
|
|
}
|
|
|
|
{
|
|
my $test_db = L3TDE::Test::DB->mock;
|
|
my $dbh = $test_db->dbh;
|
|
my $result = {
|
|
id => 1,
|
|
dummy1 => 'hola',
|
|
dummy2 => 'bar',
|
|
dummy3 => 'foobar',
|
|
data => encode_json( { foobar => 'json' } ),
|
|
};
|
|
my @keys = sort { $a cmp $b } keys %$result;
|
|
$dbh->{mock_add_resultset} = [ [@keys], [ $result->@{@keys} ] ];
|
|
my $dummy = L3TDE::Test::1::Model->new(%$result);
|
|
$dummy->dummy1('hola');
|
|
$dummy = $dummy->update([qw/dummy1/]);
|
|
ok $dummy->isa('L3TDE::Test::1::Model'), 'This dummy is made of dummy';
|
|
my $history = $dbh->{mock_all_history};
|
|
is scalar @$history, 1, 'A update statement executed';
|
|
my $st = $history->[0];
|
|
is $st->statement,
|
|
'UPDATE dummy_model SET dummy1=? WHERE id=? RETURNING dummy1,dummy2,dummy3,data,id;',
|
|
'Expected update query matches';
|
|
is_deeply [ 'hola', '1' ],
|
|
$st->bound_params, 'Bound update params match';
|
|
}
|
|
|