require 'spec_helper_system'

describe 'mysql::db define' do
  describe 'creating a database' do
    # Using puppet_apply as a helper
    it 'should work with no errors' do
      pp = <<-EOS
        class { 'mysql::server': override_options => { 'root_password' => 'password' } }
        mysql::db { 'spec1':
          user     => 'root1',
          password => 'password',
        }
      EOS

      # Run it twice and test for idempotency
      puppet_apply(pp) do |r|
        [0,2].should include r.exit_code
        r.refresh
        r.exit_code.should be_zero
      end
    end

    it 'should have the database' do
      shell("mysql -e 'show databases;'|grep spec1") do |s|
        s.exit_code.should be_zero
      end
    end
  end

  describe 'creating a database with post-sql' do
    # Using puppet_apply as a helper
    it 'should work with no errors' do
      pp = <<-EOS
        class { 'mysql::server': override_options => { 'root_password' => 'password' } }
        file { '/tmp/spec.sql':
          ensure  => file,
          content => 'CREATE TABLE table1 (id int);',
          before  => Mysql::Db['spec2'],
        }
        mysql::db { 'spec2':
          user     => 'root1',
          password => 'password',
          sql      => '/tmp/spec.sql',
        }
      EOS

      # Run it twice and test for idempotency
      puppet_apply(pp) do |r|
        [0,2].should include r.exit_code
        r.refresh
        r.exit_code.should be_zero
      end
    end

    it 'should have the table' do
      shell("mysql -e 'show tables;' spec2|grep table1") do |s|
        s.exit_code.should == 0
      end
    end
  end
end
