data_factory 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/data_factory/base_api.rb +4 -2
- data/lib/data_factory/base_dsl.rb +1 -1
- data/lib/data_factory/random.rb +18 -0
- data/test/base_api_test.rb +1 -1
- data/test/helper.rb +17 -8
- metadata +7 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9e822bc63cfb321de0f6c8c84644c1c34b1cf46e
|
4
|
+
data.tar.gz: 8669da85bf543f5f6cf3c96dbdf035211a973ea8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be85d1e78d4a80058fdb8b4dc4b81bae88679eafd27a5231cf4f461af621bb8c47a58a334f3b0c18863df1f9fa6a85ef44df976251fe52db463ea8ff2a8881d2
|
7
|
+
data.tar.gz: b30aedf808030b04d31f080a91b33b30f9bbcc297474d82ff193a06aa3f85d5e3c874fa9379b70e2ac8cb8076cfbe2cc6dde170e3aeea0d5fee51ce028b2e725
|
@@ -148,7 +148,7 @@ module DataFactory
|
|
148
148
|
# Oracle specific.
|
149
149
|
def quote_value(col)
|
150
150
|
case column_detail(col).data_type
|
151
|
-
when 'CHAR', 'VARCHAR2', 'CLOB'
|
151
|
+
when 'CHAR', 'VARCHAR2', 'CLOB', 'RAW'
|
152
152
|
"'#{@column_values[col]}'"
|
153
153
|
when 'DATE', 'DATETIME'
|
154
154
|
"to_date('#{@column_values[col].strftime('%Y%m%d %H:%M:%S')}', 'YYYYMMDD HH24:MI:SS')"
|
@@ -165,6 +165,8 @@ module DataFactory
|
|
165
165
|
case col.data_type
|
166
166
|
when 'CHAR', 'VARCHAR2', 'CLOB'
|
167
167
|
random_string_upto_length(col.data_length)
|
168
|
+
when 'RAW'
|
169
|
+
random_hex_string_upto_length(col.data_length)
|
168
170
|
when 'DATE', 'DATETIME', 'TIMESTAMP'
|
169
171
|
Time.now
|
170
172
|
when 'NUMBER', 'INTEGER'
|
@@ -206,7 +208,7 @@ module DataFactory
|
|
206
208
|
|
207
209
|
def column_type_to_ruby_type(col)
|
208
210
|
case col.data_type
|
209
|
-
when 'CHAR', 'VARCHAR2', 'CLOB'
|
211
|
+
when 'CHAR', 'VARCHAR2', 'CLOB', 'RAW'
|
210
212
|
String
|
211
213
|
when 'DATE', 'DATETIME', 'TIMESTAMP'
|
212
214
|
Time
|
data/lib/data_factory/random.rb
CHANGED
@@ -2,6 +2,7 @@ module DataFactory
|
|
2
2
|
module Random
|
3
3
|
|
4
4
|
CHARS = ['A'..'Z', 'a'..'z', '0'..'9'].map{|r|r.to_a}.flatten
|
5
|
+
HEX_CHARS = ['A'..'F', '0'..'9'].map{|r|r.to_a}.flatten
|
5
6
|
|
6
7
|
# Generates a random string of letters and numbers of length
|
7
8
|
def random_string_of_length(length)
|
@@ -12,6 +13,16 @@ module DataFactory
|
|
12
13
|
str
|
13
14
|
end
|
14
15
|
|
16
|
+
# Generates a random string of hex characters
|
17
|
+
def random_hex_string_of_length(length)
|
18
|
+
str = ''
|
19
|
+
# Binary length is double in ASCII
|
20
|
+
1.upto(length*2) do
|
21
|
+
str << HEX_CHARS[rand(HEX_CHARS.size)]
|
22
|
+
end
|
23
|
+
str
|
24
|
+
end
|
25
|
+
|
15
26
|
# Generates a random string of random length, which has a maximum
|
16
27
|
# length of max_length
|
17
28
|
def random_string_upto_length(max_length)
|
@@ -19,6 +30,13 @@ module DataFactory
|
|
19
30
|
random_string_of_length(length)
|
20
31
|
end
|
21
32
|
|
33
|
+
# Generates a hex string of random length, which has a maximum
|
34
|
+
# length of max_length
|
35
|
+
def random_hex_string_upto_length(max_length)
|
36
|
+
length = random_integer(max_length)
|
37
|
+
random_hex_string_of_length(length)
|
38
|
+
end
|
39
|
+
|
22
40
|
# Generates a random integer that is at most max_size
|
23
41
|
def random_integer(max_size)
|
24
42
|
1 + rand(max_size)
|
data/test/base_api_test.rb
CHANGED
@@ -116,7 +116,7 @@ class BaseAPITest < Test::Unit::TestCase
|
|
116
116
|
def test_generate_data_generates_column_data_if_column_not_nullable
|
117
117
|
instance = @klass.new
|
118
118
|
instance.generate_column_data
|
119
|
-
assert_not_nil(instance.column_value('
|
119
|
+
assert_not_nil(instance.column_value('COL4'))
|
120
120
|
end
|
121
121
|
|
122
122
|
def test_generate_data_default_used_for_column_when_present
|
data/test/helper.rb
CHANGED
@@ -29,14 +29,23 @@ module TestHelper
|
|
29
29
|
# Mock out returing a list of columns for a table.
|
30
30
|
def each_array(&blk)
|
31
31
|
data = [
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
# cname, type len precision, scale, position, nullable
|
33
|
+
['col1', 'varchar2', 20, nil, nil, 1, 'Y'],
|
34
|
+
['col2', 'varchar2', 20, nil, nil, 2, 'N'],
|
35
|
+
['col3', 'number', 20, 9, 2, 3, 'Y'],
|
36
|
+
['col4', 'number', 20, 9, 2, 4, 'N'],
|
37
|
+
['col5', 'integer', 20, 38, 0, 5, 'Y'],
|
38
|
+
['col6', 'integer', 20, 38, 0, 6, 'N'],
|
39
|
+
['col7', 'DATE', 20, nil, nil, 7, 'Y'],
|
40
|
+
['col8', 'DATE', 20, nil, nil, 8, 'N'],
|
41
|
+
['col9', 'TIMESTAMP',20, nil, nil, 9, 'Y'],
|
42
|
+
['col10','TIMESTAMP',20, nil, nil, 10,'N'],
|
43
|
+
['col11','raw', 20, nil, nil, 11,'Y'],
|
44
|
+
['col12','raw', 20, nil, nil, 12,'N'],
|
45
|
+
['col13','char', 20, nil, nil, 13,'Y'],
|
46
|
+
['col14','char', 20, nil, nil, 14,'N']
|
47
|
+
|
48
|
+
]
|
40
49
|
data.each do |d|
|
41
50
|
yield d
|
42
51
|
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Stephen O'Donnell
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-11-20 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Generates data to insert into database tables, allowing columns to be
|
15
14
|
defaulted or overriden. Intended to be used when testing wide tables where many
|
@@ -37,28 +36,26 @@ files:
|
|
37
36
|
- README.md
|
38
37
|
homepage: http://betteratoracle.com
|
39
38
|
licenses: []
|
39
|
+
metadata: {}
|
40
40
|
post_install_message:
|
41
41
|
rdoc_options: []
|
42
42
|
require_paths:
|
43
43
|
- lib
|
44
44
|
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
45
|
requirements:
|
47
|
-
- -
|
46
|
+
- - '>='
|
48
47
|
- !ruby/object:Gem::Version
|
49
48
|
version: '0'
|
50
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
50
|
requirements:
|
53
|
-
- -
|
51
|
+
- - '>='
|
54
52
|
- !ruby/object:Gem::Version
|
55
53
|
version: '0'
|
56
54
|
requirements: []
|
57
55
|
rubyforge_project:
|
58
|
-
rubygems_version:
|
56
|
+
rubygems_version: 2.0.3
|
59
57
|
signing_key:
|
60
|
-
specification_version:
|
58
|
+
specification_version: 4
|
61
59
|
summary: A gem to generate template insert statements for use when unit testing database
|
62
60
|
code
|
63
61
|
test_files: []
|
64
|
-
has_rdoc: true
|