aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/tasks/oracle_rake_test.rb
blob: 5f840febbc0b85b015e6108860233c795c2e538c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require 'cases/helper'

module ActiveRecord
  module OracleSetupper
    def setup
      @database      = 'db.oracle'
      @connection    = stub :connection
      @configuration = {
        'adapter'  => 'oracle',
        'database' => @database
      }
      ActiveRecord::Base.stubs(:connection).returns(@connection)
      ActiveRecord::Base.stubs(:establish_connection).returns(true)

      @tasks = Class.new(ActiveRecord::Tasks::OracleDatabaseTasks) do
        def initialize(configuration)
          ActiveSupport::Deprecation.silence { super }
        end
      end
      ActiveRecord::Tasks::DatabaseTasks.stubs(:class_for_adapter).returns(@tasks) unless defined? ActiveRecord::ConnectionAdapters::OracleAdapter
    end
  end

  class OracleDBCreateTest < ActiveRecord::TestCase
    include OracleSetupper

    def test_db_retrieves_create
      message = capture(:stderr) do
        ActiveRecord::Tasks::DatabaseTasks.create @configuration
      end
      assert_match(/not supported/, message)
    end
  end
 
  class OracleDBDropTest < ActiveRecord::TestCase
    include OracleSetupper

    def test_db_retrieves_drop
      message = capture(:stderr) do
        ActiveRecord::Tasks::DatabaseTasks.drop @configuration
      end
      assert_match(/not supported/, message)
    end
  end
 
  class OracleDBCharsetAndCollationTest < ActiveRecord::TestCase
    include OracleSetupper

    def test_db_retrieves_collation
      assert_raise NoMethodError do
        ActiveRecord::Tasks::DatabaseTasks.collation @configuration
      end
    end

    def test_db_retrieves_charset
      message = capture(:stderr) do
        ActiveRecord::Tasks::DatabaseTasks.charset @configuration
      end
      assert_match(/not supported/, message)
    end
  end

  class OracleStructureDumpTest < ActiveRecord::TestCase
    include OracleSetupper

    def setup
      super
      @connection.stubs(:structure_dump).returns("select sysdate from dual;")
    end

    def test_structure_dump
      filename = "oracle.sql"
      ActiveRecord::Tasks::DatabaseTasks.structure_dump(@configuration, filename)
      assert File.exists?(filename)
    ensure
      FileUtils.rm_f(filename)
    end
  end

  class OracleStructureLoadTest < ActiveRecord::TestCase
    include OracleSetupper

    def test_structure_load
      filename = "oracle.sql"

      open(filename, 'w') { |f| f.puts("select sysdate from dual;") }
      @connection.stubs(:execute).with("select sysdate from dual;\n")
      ActiveRecord::Tasks::DatabaseTasks.structure_load(@configuration, filename)
    ensure
      FileUtils.rm_f(filename)
    end
  end
end