Module: MigrationValidators::Spec::Macros::DBMacros::ClassMethods

Defined in:
lib/migration_validators/spec/macros/db_macros.rb

Instance Method Summary collapse

Instance Method Details

#for_column(column_name, column_type, column_options = {}, &block) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 28

def for_column column_name, column_type, column_options = {}, &block
  describe "for column #{column_name} (#{column_type})" do
    before :all do
      raise "'for_column' must be called in table context only" unless @table_wrapper.kind_of?(MigrationValidators::Spec::Support::TableWrapper)

      @column_wrapper = MigrationValidators::Spec::Support::ColumnWrapper.new(column_name, @table_wrapper, db)
      @column_type = column_type
      @column_options ||= column_options
    end

    subject do
      @column_wrapper
    end

    before :each do
      new_table @table_wrapper.table_name do |t|
        t.column @column_wrapper.column_name, @column_type, @column_options.clone
      end
    end
    

    instance_eval(&block)
  end
end

#for_table(table_name, &block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 10

def for_table table_name, &block
  describe "for table #{table_name}" do
    before :all do
      @table_wrapper = table(table_name)
    end

    before :each do
      @table_wrapper.drop
    end

    instance_eval(&block)
  end
end

#for_test_column(column_type, column_options = {}, &block) ⇒ Object



53
54
55
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 53

def for_test_column column_type, column_options = {}, &block
  for_column :test_column, column_type, column_options, &block
end

#for_test_table(&block) ⇒ Object



24
25
26
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 24

def for_test_table &block
  for_table :test_table, &block
end

#with_change(opts = {}, &block) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 106

def with_change opts = {}, &block
  describe "with change in column #{opts}" do
    before :all do
      raise "'with_change' must be called in column context only" unless @column_wrapper.kind_of?(MigrationValidators::Spec::Support::ColumnWrapper)
    end

    before :each do
      validation_options = @column_options[:validates]
      validation_options = {} unless validation_options.kind_of?(Hash)
      validation_options.merge!(opts)

      chg_table @table_wrapper.table_name do |t|
        t.change_validates @column_wrapper.column_name, validation_options
      end
    end

    subject do
      @column_wrapper
    end

    instance_eval(&block)
  end
end

#with_options(opts = {}, &block) ⇒ Object Also known as: with_option



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 83

def with_options opts = {}, &block
  describe "with options #{opts}" do
    before :all do
      raise "'with_options' must be called in validator context only" if @validator_name.blank?

      @column_options = @column_options.clone
      @column_options[:validates] = @column_options[:validates].clone
      validator_options = @column_options[:validates][@validator_name]

   
      @column_options[:validates][@validator_name] = validator_options.kind_of?(Hash) ? validator_options.merge(opts) : opts
    end
  

    subject do
      @column_wrapper
    end

    instance_eval(&block)
  end
end

#with_validator(validator_name, opts = true, &block) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/migration_validators/spec/macros/db_macros.rb', line 66

def with_validator validator_name, opts = true, &block
  describe "validated for #{validator_name}" do
    before :all do
      raise "'for_validator' must be called in column context only" unless @column_wrapper.kind_of?(MigrationValidators::Spec::Support::ColumnWrapper)

      @validator_name = validator_name
      @column_options.merge!(:validates => {validator_name => opts})
    end
  
    subject do
      @column_wrapper
    end

    instance_eval(&block)
  end
end