datum 0.9.2 → 4.0.0
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.
- 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