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

=head1 PURPOSE

Test the default values of static_class_info().

=cut

use strict;
use warnings;

use DBIx::NinjaORM;
use Test::Exception;
use Test::More tests => 5;
use Test::Type;


# Make sure that static_class_info() is supported by DBIx::NinjaORM.
can_ok(
	'DBIx::NinjaORM',
	'static_class_info',
);

# Retrieve the static class information.
my $info;
lives_ok(
	sub
	{
		$info = DBIx::NinjaORM->static_class_info();
	},
	'Retrieve the static class info.',
);

ok_hashref(
	$info,
	name => 'Static class info',
);

# List of mandatory static class info keys.
my $mandatory_keys =
[
	qw(
		default_dbh
		memcache
		table_name
		primary_key_name
		list_cache_time
		object_cache_time
		unique_fields
		filtering_fields
		readonly_fields
		has_created_field
		has_modified_field
		cache_key_field
		verbose
		verbose_cache_operations
	)
];

# Make sure we have all the mandatory keys.
subtest(
	'Verify the mandatory information.',
	sub
	{
		plan( tests => scalar( @$mandatory_keys ) );
		
		foreach my $key ( @$mandatory_keys )
		{
			ok(
				exists( $info->{ $key } ),
				"The mandatory key '$key' exists.",
			);
			# Delete the valid key, so that we can make sure at
			# the end that we don't have unknown keys.
			delete( $info->{ $key } );
		}
	}
);

# Make sure we don't have unknown keys left.
is(
	scalar( keys %$info ),
	0,
	'No unknown static class info keys found.',
);