The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use strict;
use warnings;

use Test::Exception;
use Test::FailWarnings;
use Test::More tests => 5;

use lib 't/';
use LocalTest;

use Queue::DBI;
use Queue::DBI::Admin;


my $dbh = LocalTest::ok_database_handle();

can_ok(
	'Queue::DBI::Admin',
	'has_mandatory_fields',
);

my $queue_admin;
lives_ok(
	sub
	{
		$queue_admin = Queue::DBI::Admin->new(
			'database_handle'           => $dbh,
			'queues_table_name'         => 'test_has_table_queues',
			'queue_elements_table_name' => 'test_has_table_queue_elements',
		);
	},
	'Instantiate a new Queue::DBI::Admin object.',
);

subtest(
	'Verify queues table.',
	sub
	{
		plan( tests => 2 );
		
		ok(
			$queue_admin->has_table( 'queues' ),
			'The queues table exists.',
		);
		
		ok(
			!$queue_admin->has_mandatory_fields( 'queues' ),
			'The queues table is missing mandatory fields.',
		);
	}
);

subtest(
	'Verify queue elements table.',
	sub
	{
		plan( tests => 2 );
		
		ok(
			$queue_admin->has_table( 'queue_elements' ),
			'The queue elements table exists.',
		);
		
		ok(
			!$queue_admin->has_mandatory_fields( 'queue_elements' ),
			'The queue elements table is missing mandatory fields.',
		);
	}
);

note( 'Note: the correct detection of mandatory fields is tested by has_tables() after create_tables().' );