data_factory 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/data_factory/base_api.rb +2 -2
- data/lib/data_factory/base_dsl.rb +16 -3
- data/test/base_api_test.rb +14 -0
- data/test/base_dsl_test.rb +10 -1
- data/test/helper.rb +1 -1
- metadata +2 -2
@@ -159,7 +159,7 @@ module DataFactory
|
|
159
159
|
|
160
160
|
def generate_value(col)
|
161
161
|
if col.nullable?
|
162
|
-
return nil
|
162
|
+
return nil unless self.class.populate_nullable_columns
|
163
163
|
end
|
164
164
|
|
165
165
|
case col.data_type
|
@@ -235,7 +235,7 @@ module DataFactory
|
|
235
235
|
def validate_columns(params)
|
236
236
|
params.keys.each do |k|
|
237
237
|
unless column_details.has_key? k.upcase
|
238
|
-
raise DataFactory::ColumnNotInTable
|
238
|
+
raise DataFactory::ColumnNotInTable, "Column #{k.upcase} is not in #{table_name}"
|
239
239
|
end
|
240
240
|
end
|
241
241
|
end
|
@@ -32,7 +32,7 @@ module DataFactory
|
|
32
32
|
|
33
33
|
module BaseDSL
|
34
34
|
|
35
|
-
attr_reader :table_name, :column_details, :column_defaults, :meta_data_loaded
|
35
|
+
attr_reader :table_name, :column_details, :column_defaults, :meta_data_loaded, :populate_nullable_columns
|
36
36
|
|
37
37
|
# Pass a database interface object to be used by all DataFactory sub-classes
|
38
38
|
# The interface must implement the following two methods:
|
@@ -67,6 +67,19 @@ module DataFactory
|
|
67
67
|
# all instances of the class, but is not inherited with subclasses.
|
68
68
|
def set_table_name(tab)
|
69
69
|
@table_name = tab.to_s.upcase
|
70
|
+
@populate_nullable_columns = false
|
71
|
+
end
|
72
|
+
|
73
|
+
# By default, no values will be generated for columns that can be null. By calling this
|
74
|
+
# method in the class defintion, it will set @populate_nullable_columns to true, which will
|
75
|
+
# cause values to be generated for nullable columns in the same way as for not null columns
|
76
|
+
# @example
|
77
|
+
# class MyTab < DataFactory::Base
|
78
|
+
# set_table_name 'my_table'
|
79
|
+
# populate_nullable_columns
|
80
|
+
# end
|
81
|
+
def set_populate_nullable_columns
|
82
|
+
@populate_nullable_columns = true
|
70
83
|
end
|
71
84
|
|
72
85
|
# Sets the default value to be used for a column if nothing else is
|
@@ -105,7 +118,7 @@ module DataFactory
|
|
105
118
|
load_meta_data unless meta_data_loaded
|
106
119
|
|
107
120
|
unless @column_details.has_key?(column_name.to_s.upcase)
|
108
|
-
raise DataFactory::ColumnNotInTable
|
121
|
+
raise DataFactory::ColumnNotInTable, "Column #{column_name.to_s.upcase} is not in #{table_name}"
|
109
122
|
end
|
110
123
|
|
111
124
|
@column_details[column_name.to_s.upcase]
|
@@ -167,7 +180,7 @@ module DataFactory
|
|
167
180
|
|
168
181
|
def validate_column_default(column_name, column_value)
|
169
182
|
unless @column_details.has_key? column_name
|
170
|
-
raise DataFactory::ColumnNotInTable, column_name
|
183
|
+
raise DataFactory::ColumnNotInTable, "Column #{column_name.to_s.upcase} is not in #{table_name}"
|
171
184
|
end
|
172
185
|
end
|
173
186
|
|
data/test/base_api_test.rb
CHANGED
@@ -105,6 +105,14 @@ class BaseAPITest < Test::Unit::TestCase
|
|
105
105
|
assert_nil(instance.column_value('COL1'))
|
106
106
|
end
|
107
107
|
|
108
|
+
def test_generate_data_generates_nil_if_column_nullable_unless_populate_nullable_columns_is_true
|
109
|
+
@klass.set_populate_nullable_columns
|
110
|
+
instance = @klass.new
|
111
|
+
instance.generate_column_data
|
112
|
+
assert_not_nil(instance.column_value('COL1'))
|
113
|
+
end
|
114
|
+
|
115
|
+
|
108
116
|
def test_generate_data_generates_column_data_if_column_not_nullable
|
109
117
|
instance = @klass.new
|
110
118
|
instance.generate_column_data
|
@@ -130,6 +138,12 @@ class BaseAPITest < Test::Unit::TestCase
|
|
130
138
|
assert_raises DataFactory::ColumnNotInTable do
|
131
139
|
instance.generate_column_data(:notexist => 'OVERRIDE')
|
132
140
|
end
|
141
|
+
# Also ensure the error message contains the column name
|
142
|
+
begin
|
143
|
+
instance.generate_column_data(:notexist => 'OVERRIDE')
|
144
|
+
rescue DataFactory::ColumnNotInTable => e
|
145
|
+
assert_match(/NOTEXIST is not in/, e.to_s)
|
146
|
+
end
|
133
147
|
end
|
134
148
|
|
135
149
|
|
data/test/base_dsl_test.rb
CHANGED
@@ -99,11 +99,20 @@ class BaseDSLTest < Test::Unit::TestCase
|
|
99
99
|
def test_column_detail_raises_exception_if_column_does_not_exist
|
100
100
|
@klass.set_database_interface(DBInterfaceMock.new)
|
101
101
|
@klass.set_table_name(:foobar)
|
102
|
-
assert_raises DataFactory::ColumnNotInTable do
|
102
|
+
assert_raises DataFactory::ColumnNotInTable do |e|
|
103
103
|
assert(@klass.column_detail('COLNOTTHERE').is_a?(DataFactory::Column))
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
def test_error_message_contains_column_name_when_column_does_not_exist
|
108
|
+
@klass.set_database_interface(DBInterfaceMock.new)
|
109
|
+
@klass.set_table_name(:foobar)
|
110
|
+
begin
|
111
|
+
@klass.column_detail('COLNOTTHERE').is_a?(DataFactory::Column)
|
112
|
+
rescue DataFactory::ColumnNotInTable => e
|
113
|
+
assert_match(/COLNOTTHERE is not/, e.to_s)
|
114
|
+
end
|
115
|
+
end
|
107
116
|
|
108
117
|
end
|
109
118
|
|
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Generates data to insert into database tables, allowing columns to be
|
15
15
|
defaulted or overriden. Intended to be used when testing wide tables where many
|