datum 0.9.2 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +25 -1
- data/README.md +2 -130
- data/Rakefile +3 -9
- data/lib/datum/container.rb +64 -0
- data/lib/datum/datum.rb +51 -0
- data/lib/datum/helpers.rb +58 -0
- data/lib/datum/version.rb +8 -27
- data/lib/datum.rb +21 -93
- data/lib/plan9/structures.rb +71 -0
- data/lib/support/scenario.rb +14 -0
- data/lib/support/test.rb +27 -0
- metadata +29 -124
- data/lib/datum/context.rb +0 -55
- data/lib/datum/db_tasks.rb +0 -108
- data/lib/datum/driver_helper.rb +0 -109
- data/lib/datum/enable_notification.rb +0 -27
- data/lib/datum/enable_task.rb +0 -148
- data/lib/datum/railtie.rb +0 -14
- data/lib/datum/verification_task.rb +0 -154
- data/lib/datum/verify_helpers/20120726105125_create_datum_versions.rb +0 -18
- data/lib/datum/verify_helpers/datum_version.rb +0 -8
- data/lib/datum/verify_helpers/datum_version_test.rb +0 -11
- data/lib/generators/datum/USAGE +0 -0
- data/lib/generators/datum/datum_generator.rb +0 -104
- data/lib/generators/datum/templates/datum_migration.rb +0 -21
- data/lib/generators/datum/templates/datum_model.rb +0 -6
- data/lib/tasks/datum.rake +0 -49
- data/test/datum_test.rb +0 -17
- data/test/dummy/README.rdoc +0 -261
- data/test/dummy/Rakefile +0 -7
- data/test/dummy/app/assets/javascripts/application.js +0 -15
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/controllers/application_controller.rb +0 -3
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/config/application.rb +0 -61
- data/test/dummy/config/boot.rb +0 -10
- data/test/dummy/config/database.example +0 -42
- data/test/dummy/config/database.sqlite +0 -25
- data/test/dummy/config/database.yml +0 -55
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -37
- data/test/dummy/config/environments/production.rb +0 -67
- data/test/dummy/config/environments/test.rb +0 -37
- data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test/dummy/config/initializers/inflections.rb +0 -15
- data/test/dummy/config/initializers/mime_types.rb +0 -5
- data/test/dummy/config/initializers/secret_token.rb +0 -7
- data/test/dummy/config/initializers/session_store.rb +0 -8
- data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test/dummy/config/locales/en.yml +0 -5
- data/test/dummy/config/routes.rb +0 -58
- data/test/dummy/config.ru +0 -4
- data/test/dummy/db/schema.rb +0 -16
- data/test/dummy/public/404.html +0 -26
- data/test/dummy/public/422.html +0 -26
- data/test/dummy/public/500.html +0 -25
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +0 -6
- data/test/dummy/test/lib/datum/utils/application.rb +0 -57
- data/test/dummy/test/lib/datum/utils/database.yml +0 -42
- data/test/dummy/test/test_helper.rb +0 -13
- data/test/dummy/test/unit/enable_task_test.rb +0 -70
- data/test/test_helper.rb +0 -10
metadata
CHANGED
@@ -1,49 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 4.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tyemill
|
9
|
-
- Gabriel Marius
|
10
8
|
autorequire:
|
11
9
|
bindir: bin
|
12
10
|
cert_chain: []
|
13
|
-
date:
|
11
|
+
date: 2015-02-15 00:00:00.000000000 Z
|
14
12
|
dependencies:
|
15
13
|
- !ruby/object:Gem::Dependency
|
16
14
|
name: rails
|
17
15
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
16
|
requirements:
|
20
|
-
- -
|
17
|
+
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: 4.1.7
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
23
|
requirements:
|
28
|
-
- -
|
24
|
+
- - "~>"
|
29
25
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
26
|
+
version: 4.1.7
|
31
27
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
28
|
+
name: pg
|
33
29
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
30
|
requirements:
|
36
|
-
- -
|
31
|
+
- - ">="
|
37
32
|
- !ruby/object:Gem::Version
|
38
|
-
version: 0
|
39
|
-
type: :
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
40
35
|
prerelease: false
|
41
36
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
37
|
requirements:
|
44
|
-
- -
|
38
|
+
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0
|
40
|
+
version: '0'
|
47
41
|
description: Flexible data-driven test solution for Rails
|
48
42
|
email:
|
49
43
|
- datum@tyemill.com
|
@@ -51,128 +45,39 @@ executables: []
|
|
51
45
|
extensions: []
|
52
46
|
extra_rdoc_files: []
|
53
47
|
files:
|
54
|
-
- lib/datum/context.rb
|
55
|
-
- lib/datum/db_tasks.rb
|
56
|
-
- lib/datum/driver_helper.rb
|
57
|
-
- lib/datum/enable_notification.rb
|
58
|
-
- lib/datum/enable_task.rb
|
59
|
-
- lib/datum/railtie.rb
|
60
|
-
- lib/datum/verification_task.rb
|
61
|
-
- lib/datum/verify_helpers/20120726105125_create_datum_versions.rb
|
62
|
-
- lib/datum/verify_helpers/datum_version.rb
|
63
|
-
- lib/datum/verify_helpers/datum_version_test.rb
|
64
|
-
- lib/datum/version.rb
|
65
|
-
- lib/datum.rb
|
66
|
-
- lib/generators/datum/datum_generator.rb
|
67
|
-
- lib/generators/datum/templates/datum_migration.rb
|
68
|
-
- lib/generators/datum/templates/datum_model.rb
|
69
|
-
- lib/generators/datum/USAGE
|
70
|
-
- lib/tasks/datum.rake
|
71
48
|
- MIT-LICENSE
|
72
|
-
- Rakefile
|
73
49
|
- README.md
|
74
|
-
-
|
75
|
-
-
|
76
|
-
-
|
77
|
-
-
|
78
|
-
-
|
79
|
-
-
|
80
|
-
-
|
81
|
-
-
|
82
|
-
-
|
83
|
-
- test/dummy/config/database.sqlite
|
84
|
-
- test/dummy/config/database.yml
|
85
|
-
- test/dummy/config/environment.rb
|
86
|
-
- test/dummy/config/environments/development.rb
|
87
|
-
- test/dummy/config/environments/production.rb
|
88
|
-
- test/dummy/config/environments/test.rb
|
89
|
-
- test/dummy/config/initializers/backtrace_silencers.rb
|
90
|
-
- test/dummy/config/initializers/inflections.rb
|
91
|
-
- test/dummy/config/initializers/mime_types.rb
|
92
|
-
- test/dummy/config/initializers/secret_token.rb
|
93
|
-
- test/dummy/config/initializers/session_store.rb
|
94
|
-
- test/dummy/config/initializers/wrap_parameters.rb
|
95
|
-
- test/dummy/config/locales/en.yml
|
96
|
-
- test/dummy/config/routes.rb
|
97
|
-
- test/dummy/config.ru
|
98
|
-
- test/dummy/db/schema.rb
|
99
|
-
- test/dummy/public/404.html
|
100
|
-
- test/dummy/public/422.html
|
101
|
-
- test/dummy/public/500.html
|
102
|
-
- test/dummy/public/favicon.ico
|
103
|
-
- test/dummy/Rakefile
|
104
|
-
- test/dummy/README.rdoc
|
105
|
-
- test/dummy/script/rails
|
106
|
-
- test/dummy/test/lib/datum/utils/application.rb
|
107
|
-
- test/dummy/test/lib/datum/utils/database.yml
|
108
|
-
- test/dummy/test/test_helper.rb
|
109
|
-
- test/dummy/test/unit/enable_task_test.rb
|
110
|
-
- test/test_helper.rb
|
50
|
+
- Rakefile
|
51
|
+
- lib/datum.rb
|
52
|
+
- lib/datum/container.rb
|
53
|
+
- lib/datum/datum.rb
|
54
|
+
- lib/datum/helpers.rb
|
55
|
+
- lib/datum/version.rb
|
56
|
+
- lib/plan9/structures.rb
|
57
|
+
- lib/support/scenario.rb
|
58
|
+
- lib/support/test.rb
|
111
59
|
homepage: https://github.com/tyemill/datum
|
112
|
-
licenses:
|
60
|
+
licenses:
|
61
|
+
- MIT
|
62
|
+
metadata: {}
|
113
63
|
post_install_message:
|
114
64
|
rdoc_options: []
|
115
65
|
require_paths:
|
116
66
|
- lib
|
117
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
68
|
requirements:
|
120
|
-
- -
|
69
|
+
- - ">="
|
121
70
|
- !ruby/object:Gem::Version
|
122
71
|
version: '0'
|
123
|
-
segments:
|
124
|
-
- 0
|
125
|
-
hash: 4179343628097419980
|
126
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
73
|
requirements:
|
129
|
-
- -
|
74
|
+
- - ">="
|
130
75
|
- !ruby/object:Gem::Version
|
131
76
|
version: '0'
|
132
|
-
segments:
|
133
|
-
- 0
|
134
|
-
hash: 4179343628097419980
|
135
77
|
requirements: []
|
136
78
|
rubyforge_project:
|
137
|
-
rubygems_version:
|
79
|
+
rubygems_version: 2.2.2
|
138
80
|
signing_key:
|
139
|
-
specification_version:
|
81
|
+
specification_version: 4
|
140
82
|
summary: Flexible data-driven test solution for Rails
|
141
|
-
test_files:
|
142
|
-
- test/datum_test.rb
|
143
|
-
- test/dummy/app/assets/javascripts/application.js
|
144
|
-
- test/dummy/app/assets/stylesheets/application.css
|
145
|
-
- test/dummy/app/controllers/application_controller.rb
|
146
|
-
- test/dummy/app/helpers/application_helper.rb
|
147
|
-
- test/dummy/app/views/layouts/application.html.erb
|
148
|
-
- test/dummy/config/application.rb
|
149
|
-
- test/dummy/config/boot.rb
|
150
|
-
- test/dummy/config/database.example
|
151
|
-
- test/dummy/config/database.sqlite
|
152
|
-
- test/dummy/config/database.yml
|
153
|
-
- test/dummy/config/environment.rb
|
154
|
-
- test/dummy/config/environments/development.rb
|
155
|
-
- test/dummy/config/environments/production.rb
|
156
|
-
- test/dummy/config/environments/test.rb
|
157
|
-
- test/dummy/config/initializers/backtrace_silencers.rb
|
158
|
-
- test/dummy/config/initializers/inflections.rb
|
159
|
-
- test/dummy/config/initializers/mime_types.rb
|
160
|
-
- test/dummy/config/initializers/secret_token.rb
|
161
|
-
- test/dummy/config/initializers/session_store.rb
|
162
|
-
- test/dummy/config/initializers/wrap_parameters.rb
|
163
|
-
- test/dummy/config/locales/en.yml
|
164
|
-
- test/dummy/config/routes.rb
|
165
|
-
- test/dummy/config.ru
|
166
|
-
- test/dummy/db/schema.rb
|
167
|
-
- test/dummy/public/404.html
|
168
|
-
- test/dummy/public/422.html
|
169
|
-
- test/dummy/public/500.html
|
170
|
-
- test/dummy/public/favicon.ico
|
171
|
-
- test/dummy/Rakefile
|
172
|
-
- test/dummy/README.rdoc
|
173
|
-
- test/dummy/script/rails
|
174
|
-
- test/dummy/test/lib/datum/utils/application.rb
|
175
|
-
- test/dummy/test/lib/datum/utils/database.yml
|
176
|
-
- test/dummy/test/test_helper.rb
|
177
|
-
- test/dummy/test/unit/enable_task_test.rb
|
178
|
-
- test/test_helper.rb
|
83
|
+
test_files: []
|
data/lib/datum/context.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
|
2
|
-
module Datum
|
3
|
-
|
4
|
-
class Context
|
5
|
-
|
6
|
-
def self.initialized?
|
7
|
-
return @@initialized
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.continue?
|
11
|
-
@@table_data.nil? ? false : (@@table_data.count != 0 ? true : false)
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
|
-
def self.next_row
|
17
|
-
result = nil if @@table_data.nil?
|
18
|
-
result = @@table_data.delete_at(0) unless @@table_data.nil?
|
19
|
-
@@initialized = false if !result.nil? && @@table_data.count == 0
|
20
|
-
|
21
|
-
log "next row table_data: #{@@table_data}"
|
22
|
-
#log "next row result: #{result.attributes}" unless result.nil?
|
23
|
-
log "next row initialized: #{@@initialized}"
|
24
|
-
return result
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.datum_directory
|
28
|
-
return @@directory
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.table_data
|
32
|
-
return @@table_data
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.table_data= data
|
36
|
-
@@table_data = data
|
37
|
-
@@initialized = true if !@@table_data.nil?
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.log msg
|
41
|
-
Datum::DriverHelper.log msg
|
42
|
-
end
|
43
|
-
|
44
|
-
@@directory = "#{Rails.env}/lib/datum"
|
45
|
-
@@test_directory = "#{Rails.env}/test/lib/datum"
|
46
|
-
@@table_data = nil
|
47
|
-
@@initialized = false
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
data/lib/datum/db_tasks.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
|
2
|
-
module Datum
|
3
|
-
|
4
|
-
class DbTasks
|
5
|
-
def initialize
|
6
|
-
Rails.env = @@datum_environment
|
7
|
-
end
|
8
|
-
|
9
|
-
def prepare
|
10
|
-
create
|
11
|
-
migrate
|
12
|
-
load_when_empty
|
13
|
-
end
|
14
|
-
|
15
|
-
def create
|
16
|
-
Rake::Task['db:create'].invoke()
|
17
|
-
end
|
18
|
-
|
19
|
-
def migrate
|
20
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
21
|
-
ActiveRecord::Migrator.migrate "#{@@local_path}/migrate"
|
22
|
-
end
|
23
|
-
|
24
|
-
def drop
|
25
|
-
config = Rails.configuration.database_configuration
|
26
|
-
database = config[Rails.env]["database"]
|
27
|
-
|
28
|
-
#Rake::Task['db:drop'].invoke()
|
29
|
-
ActiveRecord::Base.connection.drop_database database rescue nil
|
30
|
-
end
|
31
|
-
|
32
|
-
def load_when_empty
|
33
|
-
load_fixtures true
|
34
|
-
end
|
35
|
-
|
36
|
-
# get into the datum fixtures directory, walk the yml, load into db
|
37
|
-
def load
|
38
|
-
load_fixtures false
|
39
|
-
end
|
40
|
-
|
41
|
-
# get into datum db, get relevant tables, produce ymls (for sharing)
|
42
|
-
# tonyamoyal.com/2009/12/09/
|
43
|
-
# converting-table-data-to-yaml-for-testing-in-ruby-on-rails/
|
44
|
-
def dump
|
45
|
-
sql = "SELECT * FROM %s"
|
46
|
-
skip_tables = ["schema_info", "schema_migrations"]
|
47
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
48
|
-
tables = (ActiveRecord::Base.connection.tables - skip_tables)
|
49
|
-
tables.each do |table_name|
|
50
|
-
i = "000"
|
51
|
-
File.open("#{@@local_path}/fixtures/#{table_name}.yml", 'w') do |file|
|
52
|
-
data = ActiveRecord::Base.connection.select_all(sql % table_name)
|
53
|
-
file.write data.inject({}) { |hash, record|
|
54
|
-
hash["#{table_name}_#{i.succ!}"] = record
|
55
|
-
hash}.to_yaml
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# take Models data, produce a file for use without db
|
61
|
-
def localize args
|
62
|
-
tasked_model = args[:table].classify.constantize
|
63
|
-
data = tasked_model.all
|
64
|
-
file_name = args[:table]
|
65
|
-
File.open("#{@@local_path}/locals/#{file_name}.rb", 'w') do |f1|
|
66
|
-
f1.puts "\n\n#\n# data dump for code access of table #{file_name}"
|
67
|
-
f1.puts "#\nmodule #{tasked_model.to_s.pluralize}"
|
68
|
-
f1.puts "def self.data\nd = ["
|
69
|
-
data.each_with_index {|e, i|
|
70
|
-
hash = e.attributes
|
71
|
-
hash.each_pair {|key, value|
|
72
|
-
new_value = value.to_s
|
73
|
-
hash[key] = new_value
|
74
|
-
}
|
75
|
-
f1.puts "#{hash.to_s},"
|
76
|
-
}
|
77
|
-
f1.puts "]\nend\nend"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
private
|
82
|
-
|
83
|
-
@@local_path = "#{Rails.root}/test/lib/datum"
|
84
|
-
|
85
|
-
@@datum_environment = "datum"
|
86
|
-
|
87
|
-
def load_fixtures skip_with_data
|
88
|
-
Dir.glob("#{@@local_path}/fixtures/*.yml").entries.each do |entry|
|
89
|
-
file_name = entry.to_s.split('/').last.to_s.split('.')[0]
|
90
|
-
target_model = file_name.classify.constantize
|
91
|
-
if(!skip_with_data || target_model.count == 0)
|
92
|
-
data_hash = YAML.load(File.read(entry))
|
93
|
-
data_hash.each_value {|value|
|
94
|
-
value.delete "id"
|
95
|
-
value.delete "created_at"
|
96
|
-
value.delete "updated_at"
|
97
|
-
target_model.create value
|
98
|
-
}
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def context
|
104
|
-
return Datum::Context
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
data/lib/datum/driver_helper.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
|
2
|
-
module Datum
|
3
|
-
|
4
|
-
class DriverHelper
|
5
|
-
|
6
|
-
def self.load_data table
|
7
|
-
context.table_data = load_file_data(table) || load_model_data(table)
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.add_datum_exec_ext init_before_exec, result
|
11
|
-
return result if !init_before_exec && !context.initialized?
|
12
|
-
|
13
|
-
first = !init_before_exec && context.initialized?
|
14
|
-
last = init_before_exec && !context.initialized?
|
15
|
-
|
16
|
-
base = "," if result == "."
|
17
|
-
base = "," + result unless base == ","
|
18
|
-
base = "[" + base if first
|
19
|
-
base += "]" if last
|
20
|
-
return base
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.enable_logger
|
24
|
-
@@logger = true
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.disable_logger
|
28
|
-
@@logger = false
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
@@logger = false
|
33
|
-
|
34
|
-
def self.log msg
|
35
|
-
Rails.logger.debug "$$ " + msg unless !@@logger
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.load_model_data table
|
39
|
-
data = nil
|
40
|
-
begin
|
41
|
-
log "load_model_data attempting to constantize"
|
42
|
-
driver_method = table.to_s.singularize
|
43
|
-
data = driver_method.classify.constantize.all.reverse
|
44
|
-
log "load_model_data data loaded"
|
45
|
-
rescue Exception => exc
|
46
|
-
log "load_model_data: could not get data from model #{driver_method}"
|
47
|
-
log exc
|
48
|
-
raise
|
49
|
-
"Accessing datum database with table / model #{driver_method} failed."
|
50
|
-
end
|
51
|
-
|
52
|
-
return data
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.load_file_data table
|
56
|
-
data = nil
|
57
|
-
begin
|
58
|
-
driver_method = table.to_s.singularize
|
59
|
-
log "load_file_data: attempting require..."
|
60
|
-
file = "lib/datum/locals/#{table}"
|
61
|
-
klas = driver_method.classify.pluralize
|
62
|
-
require file
|
63
|
-
log "load_file_data: require was successful"
|
64
|
-
cls = klas.constantize
|
65
|
-
log "load_file_data: classify pluralize constantize was successful"
|
66
|
-
data = cls::data.reverse
|
67
|
-
log "load_file_data: data reading was successful"
|
68
|
-
data = mock_data data
|
69
|
-
log "load_file_data: mocking was successful"
|
70
|
-
rescue Exception => exc
|
71
|
-
## database-driven
|
72
|
-
log "load_file_data: file load failed for: #{file}"
|
73
|
-
log "load_file_data: driver_method: #{driver_method}"
|
74
|
-
log "load_file_data: class: #{klas}"
|
75
|
-
log "... attempting database connection."
|
76
|
-
end
|
77
|
-
|
78
|
-
return data
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.mock_data data
|
82
|
-
modified_data = []
|
83
|
-
data.each_with_index {|e, i|
|
84
|
-
o = Object.new
|
85
|
-
e.each_pair {|key, value|
|
86
|
-
addMockExtension key, value, o
|
87
|
-
}
|
88
|
-
modified_data.push o
|
89
|
-
}
|
90
|
-
return modified_data
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.addMockExtension(ext, instance, obj)
|
94
|
-
method_name = ext.to_sym
|
95
|
-
obj.class.send :define_method, method_name do
|
96
|
-
return instance unless instance.to_i.to_s == instance || instance == ""
|
97
|
-
return nil if instance == ""
|
98
|
-
return instance.to_i
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def self.context
|
105
|
-
return Datum::Context
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
|
2
|
-
module Datum
|
3
|
-
NOTIFICATION =
|
4
|
-
"
|
5
|
-
### !!!ADDITIONAL UPDATES REQUIRED!!!
|
6
|
-
|
7
|
-
Datum requires:
|
8
|
-
+ application.rb to reference testcase specific models
|
9
|
-
+ database.yml to contain a datum environment
|
10
|
-
|
11
|
-
- application.rb should contain:
|
12
|
-
config.autoload_paths += %W(\#{Rails.root}/test/lib/datum/models)
|
13
|
-
|
14
|
-
- database.yml should contain something like:
|
15
|
-
|
16
|
-
datum:
|
17
|
-
adapter: mysql2
|
18
|
-
encoding: utf8
|
19
|
-
reconnect: false
|
20
|
-
database: yourapp_datum
|
21
|
-
pool: 5
|
22
|
-
username: root
|
23
|
-
password:
|
24
|
-
socket: /tmp/mysql.sock
|
25
|
-
|
26
|
-
"
|
27
|
-
end
|
data/lib/datum/enable_task.rb
DELETED
@@ -1,148 +0,0 @@
|
|
1
|
-
|
2
|
-
module Datum
|
3
|
-
class EnableTask
|
4
|
-
|
5
|
-
def disable_user_questions
|
6
|
-
@@ask_user = false
|
7
|
-
end
|
8
|
-
|
9
|
-
def disable_verification
|
10
|
-
@@use_verification = false
|
11
|
-
end
|
12
|
-
|
13
|
-
def datum_directories
|
14
|
-
return @@directories
|
15
|
-
end
|
16
|
-
|
17
|
-
def rock
|
18
|
-
puts "\n Enabling Datum Data-Driven Testing Tools."
|
19
|
-
create_directories
|
20
|
-
notify_check
|
21
|
-
update_yml if @@update_yml
|
22
|
-
update_app if @@update_app
|
23
|
-
|
24
|
-
if @@use_verification
|
25
|
-
verifier = Datum::VerificationTask.new
|
26
|
-
verifier.disable_user_questions if !@@ask_user
|
27
|
-
verifier.rock
|
28
|
-
end
|
29
|
-
|
30
|
-
puts " Datum enabled.\n "
|
31
|
-
end
|
32
|
-
|
33
|
-
def create_directories
|
34
|
-
@@directories = ["#{@@datum_drop_path}/fixtures",
|
35
|
-
"#{@@datum_drop_path}/locals", "#{@@datum_drop_path}/migrate",
|
36
|
-
"#{@@datum_drop_path}/models"]
|
37
|
-
|
38
|
-
@@directories.each {
|
39
|
-
|path| FileUtils.mkdir_p(path) if !File::directory?(path)
|
40
|
-
}
|
41
|
-
|
42
|
-
puts " Datum directories created."
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
@@use_verification = @@ask_user = true
|
47
|
-
@@directories = @@application_path = @@info = nil
|
48
|
-
@@update_app = @@update_yml = false
|
49
|
-
@@datum_drop_path = "test/lib/datum"
|
50
|
-
@@datum_model_path = 'config.autoload_paths += %W(#{Rails.root}/' +
|
51
|
-
"#{@@datum_drop_path}" + '/models)'
|
52
|
-
@@datum_app_scan = "config.autoload_paths.*#{@@datum_drop_path}/models"
|
53
|
-
#@@datum_app_scan = "config.autoload_paths.*test\/lib\/datum\/models"
|
54
|
-
#@@datum_drop_path.gsub(Regexp.new("\\/"), "\\/")
|
55
|
-
#"config.autoload_paths.*#{encoded_path}\/models"
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
def notify_check
|
60
|
-
@@update_yml = need_yml?
|
61
|
-
@@update_app = need_app?
|
62
|
-
|
63
|
-
notify unless !@@update_yml && !@@update_app
|
64
|
-
end
|
65
|
-
|
66
|
-
def notify
|
67
|
-
require "datum/enable_notification"
|
68
|
-
puts "#{Datum::NOTIFICATION}"
|
69
|
-
puts " Files that may need updates: "
|
70
|
-
puts " database.yml" if @@update_yml
|
71
|
-
puts " application.rb" if @@update_app
|
72
|
-
|
73
|
-
if @@ask_user
|
74
|
-
puts "\n>>>>>>>>>>>>>>>> Attempt updates for you? y/n"
|
75
|
-
continue = STDIN.gets.chomp
|
76
|
-
unless continue == 'y' || continue == 'yes'
|
77
|
-
puts "\n Files must be updated manually to fully enable Datum"
|
78
|
-
puts " Run rake task 'datum:db:verify' after manual update.\n "
|
79
|
-
exit!
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def update_yml
|
85
|
-
app_name = Rails.root.to_s.split("/").last
|
86
|
-
target_hash = @@info["test"] ? @@info["test"] : @@info["development"]
|
87
|
-
|
88
|
-
if target_hash.nil?
|
89
|
-
puts " Can't update database.yml without a pre-existing"
|
90
|
-
puts " test or development segment."
|
91
|
-
puts "###### !!!! Please update database.yml manually !!!! ######\n "
|
92
|
-
return
|
93
|
-
end
|
94
|
-
|
95
|
-
File.open(Rails.root.join("config/database.yml"), 'a') do |f1|
|
96
|
-
f1.puts "\n\n#\n# database entry for data-driven testing.\n#"
|
97
|
-
f1.puts "datum:"
|
98
|
-
target_hash.each_pair {|key, value|
|
99
|
-
f1.puts " #{key}: #{value}" unless key == "database"
|
100
|
-
f1.puts " database: #{app_name}_datum" if key == "database"
|
101
|
-
}
|
102
|
-
end
|
103
|
-
|
104
|
-
puts " database.yml updated with datum entry"
|
105
|
-
end
|
106
|
-
|
107
|
-
def update_app
|
108
|
-
FileUtils.mkdir_p("tmp")
|
109
|
-
tmp_path = "tmp/app.tmp"
|
110
|
-
tempfile = File.open(tmp_path, 'w')
|
111
|
-
readfile = open_app_file
|
112
|
-
|
113
|
-
readfile.each do |line|
|
114
|
-
tempfile << line
|
115
|
-
if line.strip == "class Application < Rails::Application"
|
116
|
-
tempfile << "\n # Added as part of datum install, enables access to datum specific models\n"
|
117
|
-
tempfile << " #{@@datum_model_path}\n\n"
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
readfile.close
|
122
|
-
tempfile.close
|
123
|
-
FileUtils.mv(tmp_path, @@application_path)
|
124
|
-
|
125
|
-
puts " application.rb updated with datum model reference"
|
126
|
-
end
|
127
|
-
|
128
|
-
def need_yml?
|
129
|
-
@@info = YAML::load(IO.read(Rails.root.join("config/database.yml")))
|
130
|
-
return true unless @@info["datum"]
|
131
|
-
return false
|
132
|
-
end
|
133
|
-
|
134
|
-
def need_app?
|
135
|
-
pattern = Regexp.new "#{@@datum_app_scan}"
|
136
|
-
readfile = open_app_file
|
137
|
-
readfile.each do |line|
|
138
|
-
return false if line.scan(pattern).length != 0
|
139
|
-
end
|
140
|
-
return true
|
141
|
-
end
|
142
|
-
|
143
|
-
def open_app_file
|
144
|
-
@@application_path = Rails.root.join("config/application.rb")
|
145
|
-
return File.new(@@application_path)
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
data/lib/datum/railtie.rb
DELETED