From 90f9f743a0a00d0d4efc0bea2a521ea0efc6c043 Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Thu, 31 Mar 2022 18:36:10 +0200 Subject: [PATCH] Adding tests to Peace::DAO::Build. --- lib/Peace/DAO/Build.pm | 1 + t/00012-build-dao.t | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 t/00012-build-dao.t diff --git a/lib/Peace/DAO/Build.pm b/lib/Peace/DAO/Build.pm index 85ae330..cffd51c 100644 --- a/lib/Peace/DAO/Build.pm +++ b/lib/Peace/DAO/Build.pm @@ -49,6 +49,7 @@ EOF my $result = $dbh->selectrow_hashref( $insert, undef, $build->release->uuid, $build->success, $build->log, $build->arch ); + die "Couldn't create build." if !defined $result; my $uuid = $result->{uuid}; my $new_build = $self->recover_by_uuid( uuid => $uuid ); $build->uuid( $new_build->uuid ); diff --git a/t/00012-build-dao.t b/t/00012-build-dao.t new file mode 100644 index 0000000..1d96f0f --- /dev/null +++ b/t/00012-build-dao.t @@ -0,0 +1,64 @@ +#!/usr/bin/env perl + +use v5.30.0; + +use strict; +use warnings; + +use Test::Most tests => 3; + +use DBI; +use DateTime; +use DateTime::Format::Pg; + +use Peace::Test::Mock::Model::Build; + +BEGIN { + use_ok 'Peace::DAO::Build'; +} + +{ + ## GIVEN + my $sql = <<'EOF'; +INSERT INTO builds (release, success, log, + arch) +VALUES (?, ?, ?, ?) +RETURNING uuid; +EOF + my $datetime = DateTime->now; + my $iso8601 = DateTime::Format::Pg->new; + my $uuid = 'hola'; + my $dbh = DBI->connect('dbi:Mock:'); + my $build = Peace::Test::Mock::Model::Build->new; + $build->release->uuid('hola'); + my $build_dao = Peace::DAO::Build->new( dbh => $dbh ); + $dbh->{mock_add_resultset} = { + sql => $sql, + results => [ ['uuid'], [$uuid], ] + }; + $sql = <<'EOF'; +SELECT uuid, date_creation, + release, success, log, arch +FROM builds +WHERE uuid = ?; +EOF + $dbh->{mock_add_resultset} = { + sql => $sql, + results => [ + [ 'uuid', 'date_creation', 'release', 'success', 'log', 'arch' ], + [ + $uuid, $iso8601->format_datetime($datetime), + $build->release->uuid, $build->success, + $build->log, $build->arch + ], + ] + }; + + ## WHEN + $build_dao->create( build => $build ); + + ## THEN + is $build->uuid, $uuid, 'Uuid is set correctly'; + is "" . $build->date_creation, "" . $datetime, + 'Date creation matchs the expected'; +}