DBIx-Changeset

 view release on metacpan or  search on metacpan

t/09-Changeset-App.t  view on Meta::CPAN

is($cmd->{'config'}->{'test2'}, 'testing', 'Got correct test2 value from test2.yml during array test');
is($cmd->{'config'}->{'test3'}, 1, 'Got correct test3 value from test1.yml during array test');
## test with array
$cmd->config([File::Spec->catfile('t', 'test2.yml'), File::Spec->catfile('t', 'test1.yml')]);
is($cmd->{'config'}->{'test'}, 1, 'Got correct config var for test from reverse array test');
is($cmd->{'config'}->{'test2'}, 'testing', 'Got correct test2 value from test2.yml during reverse array test');
is($cmd->{'config'}->{'test3'}, 1, 'Got correct test3 value from test1.yml during array reverse test');


{
	local @ARGV = qw(commands);

	my ($output) = Test::Output::output_from(sub { $cmd->run });
	
	for my $name (qw(create update compare applied bootstrap commands help)) {
		like($output, qr/^\s+\Q$name\E/sm, "$name command in listing");
	}
}

### test create options
{
	local @ARGV = qw(help create);

	my ($output) = Test::Output::output_from(sub { $cmd->run });

	### do we have the default options
	for my $name (qw(help prompt)) {
		like($output, qr/^\s+\Q--$name\E/sm, "$name default option listed");
	}
	
	### do we have the 2 other added options
	for my $name (qw(edit editor location template)) {
		like($output, qr/^\s+\Q--$name\E/sm, "$name create option listed");
	}
}

### test create option validation
{
	local @ARGV = qw(create);

	eval { $cmd->run; };

	### check for complaint about changeset location
	like($@, qr/valid changeset location/, 'got complaint about changeset location from create');
}

### test create option validation
{
	local @ARGV = qw(create --location=./t/data);

	eval { $cmd->run; };

	### check for complaint about missing delta name
	like($@, qr/valid changeset name/, 'got complaint about delta name from create');
}

### test create
{
	local @ARGV = qw(create --location=./t/data --template=./t/add_template.txt moose);

	my $output;
	eval { ($output) = Test::Output::output_from(sub { $cmd->run }); };

	### check that we get the create filename message
	my $created;
	if ( $output =~ qr/created: (.*_moose.sql)$/ ) {
		$created = $1;
	}
	like($output, qr/created: (.*_moose.sql)$/, 'found filename in output');
	### does purported file exists
	ok(-e $created, 'reported file exists');
	unlink ( $created );
}

### test bootstrap options
{
	local @ARGV = qw(help bootstrap);

	my ($output) = Test::Output::output_from(sub { $cmd->run });

	### do we have the other added options
	for my $name (qw(history_db_dsn history_db_user history_db_password)) {
		like($output, qr/^\s+\Q--$name\E/sm, "$name compare option listed");
	}
}

### test bootstrap option validation
{
	local @ARGV = qw(bootstrap);

	eval { $cmd->run; };

	### check for complaint about missing history_db_dsn
	like($@, qr/history_db_dsn/, 'got complaint about history_db_dsn from bootstrap');
}

### test valid bootstrap
{
	local @ARGV = ('bootstrap', "--history_db_dsn=".$test_dsn);
	
	my $output;
	eval { ($output) = Test::Output::output_from(sub { $cmd->run; }); };
	if ( $@ ) { diag($@); }
	
	like($output, qr/complete./, 'can do a valid bootstrap');
}

### test valid bootstrap with DBIX_UPDATE_CONFIG env var
{

t/09-Changeset-App.t  view on Meta::CPAN

	
	my $output;
	($output) = eval { qx#DBIX_CHANGESET_CONFIG=$testenvcfg bin/dbix_changeset.pl bootstrap#; };
	if ( $@ ) { diag($@); }

	like($output, qr/complete./, 'can do a valid bootstrap with DBIX_UPDATE_CONFIG');
}

### test compare options
{
	local @ARGV = qw(help compare);

	my ($output) = Test::Output::output_from(sub { $cmd->run });

	### do we have the other added options
	for my $name (qw(location type like history_db_dsn history_db_user history_db_password)) {
		like($output, qr/^\s+\Q--$name\E/sm, "$name compare option listed");
	}
}

### test compare option validation
{
	local @ARGV = qw(compare);

	eval { $cmd->run; };

	### check for complaint about changeset location
	like($@, qr/valid changeset location/, 'got complaint about changeset location from compare');

	@ARGV = qw(compare --location=./t/data2);
	
	eval { $cmd->run; };

	### check for complaint about missing history_db_dsn
	like($@, qr/history_db_dsn/, 'got complaint about history_db_dsn from compare');
}

### test update options
{
	local @ARGV = qw(help update);

	my ($output) = Test::Output::output_from(sub { $cmd->run });

	### do we have the other added options
	for my $name (qw(loader location type db_user db_password db_host db_name history_db_dsn history_db_user history_db_password)) {
		like($output, qr/^\s+\Q--$name\E/sm, "$name update option listed");
	}
}

### test compare option validation
{
	local @ARGV = qw(update);

	eval { $cmd->run; };

	### check for complaint about changeset location
	like($@, qr/valid changeset location/, 'got complaint about changeset location from update');

	@ARGV = qw(update --location=./t/data2);
	
	eval { $cmd->run; };

	### check for complaint about missing history_db_dsn
	like($@, qr/history_db_dsn/, 'got complaint about history_db_dsn from update');

	local @ARGV = ('update', '--location=./t/data', '--history_db_dsn='.$test_dsn);
	
	eval { $cmd->run; };
	
	### check for complaint about missing db_name
	like($@, qr/db_name/, 'got complaint about history_db_dsn from update');

}
### test that update works with valid options
=head1
{
	SKIP: {
		skip 'Set $ENV{MYSQL_TEST} to a true value to run all mysql tests. DBD_MYSQL_DBNAME, DBD_MYSQL_USER and DBD_MYSQL_PASSWD can be used to change the defult db of test', 1 unless defined $ENV{MYSQL_TEST};
		
		my $db   = $ENV{DBD_MYSQL_DBNAME} || 'test';
		my $user = $ENV{DBD_MYSQL_USER}   || '';
		my $pass = $ENV{DBD_MYSQL_PASSWD} || '';

		local @ARGV = ('update', '--location=./t/data', '--history_db_dsn='.$test_dsn, '--db_name='.$db, '--db_user='.$user, '--db_password='.$pass);

		my $output;
		diag(join(' ', @ARGV));
		eval { ($output) = Test::Output::output_from(sub { $cmd->run }); };
#		eval { $cmd->run };
#		diag($@);
#		diag($output);
	
	}



( run in 1.071 second using v1.01-cache-2.11-cpan-49f99fa48dc )