to_factory 2.0.0 → 3.0.0.pre.pre

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.
Files changed (68) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +35 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop-disabled.yml +95 -0
  5. data/.rubocop-enabled.yml +1194 -0
  6. data/.rubocop.yml +938 -0
  7. data/CHANGELOG.md +11 -0
  8. data/Gemfile +6 -1
  9. data/README.md +11 -10
  10. data/Rakefile +17 -9
  11. data/lib/to_factory/collation.rb +9 -9
  12. data/lib/to_factory/file_sync.rb +11 -11
  13. data/lib/to_factory/file_writer.rb +18 -2
  14. data/lib/to_factory/finders/factory.rb +8 -2
  15. data/lib/to_factory/finders/model.rb +11 -13
  16. data/lib/to_factory/generation/attribute.rb +10 -12
  17. data/lib/to_factory/generation/factory.rb +3 -3
  18. data/lib/to_factory/klass_inference.rb +4 -6
  19. data/lib/to_factory/options_parser.rb +4 -4
  20. data/lib/to_factory/parsing/file.rb +87 -14
  21. data/lib/to_factory/representation.rb +9 -6
  22. data/lib/to_factory/version.rb +1 -1
  23. data/lib/to_factory.rb +7 -17
  24. data/spec/db/migrate/1_create_users.rb +4 -4
  25. data/spec/db/migrate/2_create_projects.rb +4 -4
  26. data/spec/db/migrate/3_create_not_namespaced.rb +4 -4
  27. data/spec/db/migrate/4_add_birthday_to_users.rb +3 -3
  28. data/spec/db/migrate/5_add_serialized_attributes_to_users.rb +3 -3
  29. data/spec/example_factories/admin.rb +6 -6
  30. data/spec/example_factories/admin_with_header.rb +7 -7
  31. data/spec/example_factories/inherited_project_with_header.rb +7 -0
  32. data/spec/example_factories/project_with_header.rb +4 -4
  33. data/spec/example_factories/user.rb +5 -5
  34. data/spec/example_factories/user_admin.rb +11 -11
  35. data/spec/example_factories/user_admin_root.rb +12 -12
  36. data/spec/example_factories/user_admin_super_admin.rb +6 -6
  37. data/spec/example_factories/user_admin_with_header.rb +12 -12
  38. data/spec/example_factories/user_with_header.rb +6 -6
  39. data/spec/integration/empty_factory_file_spec.rb +19 -0
  40. data/spec/integration/file_sync_spec.rb +16 -24
  41. data/spec/integration/file_writer_spec.rb +13 -9
  42. data/spec/integration/lint_spec.rb +4 -3
  43. data/spec/integration/multiple_to_factory_calls_spec.rb +96 -0
  44. data/spec/integration/non_active_record_classes_spec.rb +40 -0
  45. data/spec/integration/to_factory_method_spec.rb +21 -20
  46. data/spec/spec_helper.rb +9 -18
  47. data/spec/support/broken_models/invalid_ruby_file.rb +1 -0
  48. data/spec/support/broken_models/project.rb +3 -0
  49. data/spec/support/data_creation.rb +11 -13
  50. data/spec/support/match_sexp.rb +0 -1
  51. data/spec/support/non_active_record/inherited_project.rb +3 -0
  52. data/spec/support/non_active_record/project.rb +3 -0
  53. data/spec/support/non_active_record/some_other_service_inheriting_from_something_else.rb +4 -0
  54. data/spec/support/non_active_record/some_service.rb +2 -0
  55. data/spec/support/non_active_record/something_else.rb +2 -0
  56. data/spec/support/ruby_parser_exception_causing_string.rb +29 -29
  57. data/spec/unit/collation_spec.rb +9 -10
  58. data/spec/unit/file_writer_spec.rb +4 -8
  59. data/spec/unit/finders/factory_spec.rb +7 -9
  60. data/spec/unit/finders/model_spec.rb +35 -8
  61. data/spec/unit/generation/attribute_spec.rb +22 -22
  62. data/spec/unit/generation/factory_spec.rb +38 -14
  63. data/spec/unit/parsing/file_spec.rb +9 -9
  64. data/spec/unit/parsing/klass_inference_spec.rb +5 -7
  65. data/to_factory.gemspec +17 -15
  66. metadata +109 -44
  67. data/.travis.yml +0 -14
  68. data/lib/to_factory/parsing/syntax.rb +0 -83
@@ -1,6 +1,6 @@
1
1
  describe ToFactory::Parsing::File do
2
2
  let(:user_contents) { File.read "spec/example_factories/user.rb" }
3
- let(:admin_contents) { File.read "spec/example_factories/admin.rb"}
3
+ let(:admin_contents) { File.read "spec/example_factories/admin.rb" }
4
4
 
5
5
  let(:parser) { ToFactory::Parsing::File.from_file(filename) }
6
6
 
@@ -18,7 +18,7 @@ describe ToFactory::Parsing::File do
18
18
 
19
19
  it do
20
20
  expect(Kernel).to receive(:warn).with(/#{dynamic_content}/).at_least :once
21
- expect(lambda{instance.parse}).not_to raise_error
21
+ expect { instance.parse }.not_to raise_error
22
22
  result = instance.parse
23
23
  expect(result).to be_a Array
24
24
  expect(result[0]).to be_a ToFactory::NullRepresentation
@@ -28,7 +28,7 @@ describe ToFactory::Parsing::File do
28
28
 
29
29
  describe "#multiple_factories? and #header?" do
30
30
  context "new syntax" do
31
- tests = #file, multiple, header
31
+ tests = # file, multiple, header
32
32
  [
33
33
  ["user", false, false],
34
34
  ["user_with_header", false, true],
@@ -39,7 +39,7 @@ describe ToFactory::Parsing::File do
39
39
  tests.each do |file, multiple, header|
40
40
  context "with #{header ? 'header' : 'no header'} and #{multiple ? 'multiple factories' : 'one factory'}" do
41
41
  context "file: #{file}" do
42
- let(:filename) { "spec/example_factories/#{file}.rb"}
42
+ let(:filename) { "spec/example_factories/#{file}.rb" }
43
43
 
44
44
  it { expect(parser.multiple_factories?).to eq multiple }
45
45
  it { expect(parser.header?).to eq header }
@@ -51,7 +51,7 @@ describe ToFactory::Parsing::File do
51
51
 
52
52
  describe "#parse" do
53
53
  context "with multiple levels of parent classes" do
54
- let(:filename) { "spec/example_factories/#{'user_admin_super_admin'}.rb"}
54
+ let(:filename) { "spec/example_factories/#{'user_admin_super_admin'}.rb" }
55
55
 
56
56
  it do
57
57
  result = parser.parse
@@ -61,7 +61,7 @@ describe ToFactory::Parsing::File do
61
61
  end
62
62
 
63
63
  context "file: user" do
64
- let(:filename) { "spec/example_factories/#{'user'}.rb"}
64
+ let(:filename) { "spec/example_factories/#{'user'}.rb" }
65
65
 
66
66
  it do
67
67
  result = parser.parse
@@ -71,7 +71,7 @@ describe ToFactory::Parsing::File do
71
71
  end
72
72
 
73
73
  context "file: user_with_header" do
74
- let(:filename) { "spec/example_factories/#{'user_with_header'}.rb"}
74
+ let(:filename) { "spec/example_factories/#{'user_with_header'}.rb" }
75
75
 
76
76
  it do
77
77
  result = parser.parse
@@ -81,7 +81,7 @@ describe ToFactory::Parsing::File do
81
81
  end
82
82
 
83
83
  context "file: user_admin" do
84
- let(:filename) { "spec/example_factories/#{'user_admin'}.rb"}
84
+ let(:filename) { "spec/example_factories/#{'user_admin'}.rb" }
85
85
 
86
86
  it do
87
87
  result = parser.parse
@@ -94,7 +94,7 @@ describe ToFactory::Parsing::File do
94
94
  end
95
95
 
96
96
  context "file: user_admin_with_header" do
97
- let(:filename) { "spec/example_factories/#{'user_admin_with_header'}.rb"}
97
+ let(:filename) { "spec/example_factories/#{'user_admin_with_header'}.rb" }
98
98
 
99
99
  it do
100
100
  result = parser.parse
@@ -2,27 +2,25 @@ describe ToFactory::KlassInference do
2
2
  let(:inference) { ToFactory::KlassInference.new representations }
3
3
 
4
4
  mappings = [
5
- [:super_admin, :admin, ToFactory::User, 3],
5
+ [:super_admin, :admin, ToFactory::User, 3],
6
6
  [:"to_factory/user", nil, ToFactory::User, 1],
7
7
  [:admin, :"to_factory/user", ToFactory::User, 2],
8
8
  [:some_project, :"to_factory/project", ToFactory::Project, 2],
9
- [:sub_project, :"some_project", ToFactory::Project, 3],
9
+ [:sub_project, :some_project, ToFactory::Project, 3]
10
10
  ]
11
11
 
12
-
13
- let(:representations) { mappings.map{|name, parent, _| ToFactory::Representation.new(name,parent) }}
12
+ let(:representations) { mappings.map { |name, parent, _| ToFactory::Representation.new(name, parent) } }
14
13
 
15
14
  mappings.each do |name, parent_name, expected_klass, expected_order|
16
15
  it "having #{name} and #{parent_name.inspect} implies #{expected_klass} #{expected_order} "do
17
16
  result_klass, order = inference.infer(name.to_s)
18
17
 
19
18
  expect(result_klass).to eq expected_klass
20
- expect(order ).to eq expected_order
19
+ expect(order).to eq expected_order
21
20
  end
22
21
  end
23
22
 
24
23
  it do
25
-
26
- expect(lambda{inference.infer("unknown")}).to raise_error
24
+ expect { inference.infer("unknown") }.to raise_error ToFactory::CannotInferClass
27
25
  end
28
26
  end
data/to_factory.gemspec CHANGED
@@ -1,34 +1,36 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'to_factory/version'
4
+ require "to_factory/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "to_factory"
8
8
  spec.version = ToFactory::VERSION
9
9
  spec.authors = ["Mark Burns"]
10
10
  spec.email = ["markthedeveloper@gmail.com"]
11
- spec.summary = %q{Turn ActiveRecord instances into factories}
12
- spec.description = %q{Autogenerate and append/create factory_girl definitions from the console}
11
+ spec.summary = "Turn ActiveRecord instances into factories"
12
+ spec.description = "Autogenerate and append/create factory_bot definitions from the console"
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}){ |f| File.basename(f) }.reject{|f| f== "spec" || f =="ci" }
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }.reject { |f| f == "spec" || f == "ci" }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "sqlite3" , "~> 1.3.6"
22
- spec.add_development_dependency "database_cleaner", "~> 1.4.0"
21
+ spec.add_dependency "factory_bot"
22
+ spec.add_dependency "ruby2ruby"
23
23
 
24
- if RUBY_VERSION =~ /^2\.\d/
25
- spec.add_development_dependency "pry-byebug"
26
- end
24
+ spec.add_development_dependency "activerecord"
25
+ spec.add_development_dependency "sqlite3"
26
+ spec.add_development_dependency "database_cleaner"
27
27
 
28
- spec.add_development_dependency "factory_girl", "~> 4.5"
29
- spec.add_development_dependency "rspec", "~> 3.0"
30
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "byebug"
29
+ spec.add_development_dependency "pry"
31
30
 
32
- spec.add_dependency "ruby2ruby"
33
- spec.add_dependency "activerecord", "> 4.0"
31
+ spec.add_development_dependency 'simplecov'
32
+ spec.add_development_dependency 'rspec-github'
33
+
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ spec.add_development_dependency "rake", ">= 12.3.3"
34
36
  end
metadata CHANGED
@@ -1,45 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0.pre.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Burns
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-22 00:00:00.000000000 Z
11
+ date: 2022-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sqlite3
14
+ name: factory_bot
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby2ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
18
46
  - !ruby/object:Gem::Version
19
- version: 1.3.6
47
+ version: '0'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - "~>"
52
+ - - ">="
25
53
  - !ruby/object:Gem::Version
26
- version: 1.3.6
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
- name: database_cleaner
56
+ name: sqlite3
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - "~>"
59
+ - - ">="
32
60
  - !ruby/object:Gem::Version
33
- version: 1.4.0
61
+ version: '0'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - "~>"
66
+ - - ">="
39
67
  - !ruby/object:Gem::Version
40
- version: 1.4.0
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
- name: pry-byebug
70
+ name: database_cleaner
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
@@ -53,55 +81,55 @@ dependencies:
53
81
  - !ruby/object:Gem::Version
54
82
  version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: factory_girl
84
+ name: byebug
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
- version: '4.5'
89
+ version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - "~>"
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
- version: '4.5'
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
- name: rspec
98
+ name: pry
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
- version: '3.0'
103
+ version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
- version: '3.0'
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
- name: rake
112
+ name: simplecov
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - "~>"
115
+ - - ">="
88
116
  - !ruby/object:Gem::Version
89
- version: '10.0'
117
+ version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - "~>"
122
+ - - ">="
95
123
  - !ruby/object:Gem::Version
96
- version: '10.0'
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
- name: ruby2ruby
126
+ name: rspec-github
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - ">="
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
104
- type: :runtime
132
+ type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
@@ -109,29 +137,47 @@ dependencies:
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
- name: activerecord
140
+ name: rspec
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - ">"
143
+ - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '4.0'
118
- type: :runtime
145
+ version: '3.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: 12.3.3
160
+ type: :development
119
161
  prerelease: false
120
162
  version_requirements: !ruby/object:Gem::Requirement
121
163
  requirements:
122
- - - ">"
164
+ - - ">="
123
165
  - !ruby/object:Gem::Version
124
- version: '4.0'
125
- description: Autogenerate and append/create factory_girl definitions from the console
166
+ version: 12.3.3
167
+ description: Autogenerate and append/create factory_bot definitions from the console
126
168
  email:
127
169
  - markthedeveloper@gmail.com
128
170
  executables: []
129
171
  extensions: []
130
172
  extra_rdoc_files: []
131
173
  files:
174
+ - ".github/workflows/test.yml"
132
175
  - ".gitignore"
133
176
  - ".rspec"
134
- - ".travis.yml"
177
+ - ".rubocop-disabled.yml"
178
+ - ".rubocop-enabled.yml"
179
+ - ".rubocop.yml"
180
+ - CHANGELOG.md
135
181
  - Gemfile
136
182
  - README.md
137
183
  - Rakefile
@@ -150,7 +196,6 @@ files:
150
196
  - lib/to_factory/options_parser.rb
151
197
  - lib/to_factory/parsing/file.rb
152
198
  - lib/to_factory/parsing/ruby_parsing_helpers.rb
153
- - lib/to_factory/parsing/syntax.rb
154
199
  - lib/to_factory/representation.rb
155
200
  - lib/to_factory/version.rb
156
201
  - spec/db/migrate/1_create_users.rb
@@ -160,6 +205,7 @@ files:
160
205
  - spec/db/migrate/5_add_serialized_attributes_to_users.rb
161
206
  - spec/example_factories/admin.rb
162
207
  - spec/example_factories/admin_with_header.rb
208
+ - spec/example_factories/inherited_project_with_header.rb
163
209
  - spec/example_factories/project_with_header.rb
164
210
  - spec/example_factories/user.rb
165
211
  - spec/example_factories/user_admin.rb
@@ -168,16 +214,26 @@ files:
168
214
  - spec/example_factories/user_admin_with_header.rb
169
215
  - spec/example_factories/user_with_header.rb
170
216
  - spec/integration/config_spec.rb
217
+ - spec/integration/empty_factory_file_spec.rb
171
218
  - spec/integration/file_sync_spec.rb
172
219
  - spec/integration/file_writer_spec.rb
173
220
  - spec/integration/lint_spec.rb
221
+ - spec/integration/multiple_to_factory_calls_spec.rb
222
+ - spec/integration/non_active_record_classes_spec.rb
174
223
  - spec/integration/to_factory_method_spec.rb
175
224
  - spec/spec_helper.rb
225
+ - spec/support/broken_models/invalid_ruby_file.rb
226
+ - spec/support/broken_models/project.rb
176
227
  - spec/support/data_creation.rb
177
228
  - spec/support/match_sexp.rb
178
229
  - spec/support/models/not_active_record.rb
179
230
  - spec/support/models/project.rb
180
231
  - spec/support/models/user.rb
232
+ - spec/support/non_active_record/inherited_project.rb
233
+ - spec/support/non_active_record/project.rb
234
+ - spec/support/non_active_record/some_other_service_inheriting_from_something_else.rb
235
+ - spec/support/non_active_record/some_service.rb
236
+ - spec/support/non_active_record/something_else.rb
181
237
  - spec/support/ruby_parser_exception_causing_string.rb
182
238
  - spec/unit/collation_spec.rb
183
239
  - spec/unit/file_writer_spec.rb
@@ -204,12 +260,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
260
  version: '0'
205
261
  required_rubygems_version: !ruby/object:Gem::Requirement
206
262
  requirements:
207
- - - ">="
263
+ - - ">"
208
264
  - !ruby/object:Gem::Version
209
- version: '0'
265
+ version: 1.3.1
210
266
  requirements: []
211
- rubyforge_project:
212
- rubygems_version: 2.4.5
267
+ rubygems_version: 3.3.26
213
268
  signing_key:
214
269
  specification_version: 4
215
270
  summary: Turn ActiveRecord instances into factories
@@ -221,6 +276,7 @@ test_files:
221
276
  - spec/db/migrate/5_add_serialized_attributes_to_users.rb
222
277
  - spec/example_factories/admin.rb
223
278
  - spec/example_factories/admin_with_header.rb
279
+ - spec/example_factories/inherited_project_with_header.rb
224
280
  - spec/example_factories/project_with_header.rb
225
281
  - spec/example_factories/user.rb
226
282
  - spec/example_factories/user_admin.rb
@@ -229,16 +285,26 @@ test_files:
229
285
  - spec/example_factories/user_admin_with_header.rb
230
286
  - spec/example_factories/user_with_header.rb
231
287
  - spec/integration/config_spec.rb
288
+ - spec/integration/empty_factory_file_spec.rb
232
289
  - spec/integration/file_sync_spec.rb
233
290
  - spec/integration/file_writer_spec.rb
234
291
  - spec/integration/lint_spec.rb
292
+ - spec/integration/multiple_to_factory_calls_spec.rb
293
+ - spec/integration/non_active_record_classes_spec.rb
235
294
  - spec/integration/to_factory_method_spec.rb
236
295
  - spec/spec_helper.rb
296
+ - spec/support/broken_models/invalid_ruby_file.rb
297
+ - spec/support/broken_models/project.rb
237
298
  - spec/support/data_creation.rb
238
299
  - spec/support/match_sexp.rb
239
300
  - spec/support/models/not_active_record.rb
240
301
  - spec/support/models/project.rb
241
302
  - spec/support/models/user.rb
303
+ - spec/support/non_active_record/inherited_project.rb
304
+ - spec/support/non_active_record/project.rb
305
+ - spec/support/non_active_record/some_other_service_inheriting_from_something_else.rb
306
+ - spec/support/non_active_record/some_service.rb
307
+ - spec/support/non_active_record/something_else.rb
242
308
  - spec/support/ruby_parser_exception_causing_string.rb
243
309
  - spec/unit/collation_spec.rb
244
310
  - spec/unit/file_writer_spec.rb
@@ -248,4 +314,3 @@ test_files:
248
314
  - spec/unit/generation/factory_spec.rb
249
315
  - spec/unit/parsing/file_spec.rb
250
316
  - spec/unit/parsing/klass_inference_spec.rb
251
- has_rdoc:
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.3
4
- - 2.1.7
5
- - 2.0.0
6
- - 1.9.3
7
-
8
- script: "./bin/ci"
9
-
10
- branches:
11
- only:
12
- - master
13
- - stable
14
-
@@ -1,83 +0,0 @@
1
- module ToFactory
2
- module Parsing
3
- ParseException = Class.new ::Exception
4
-
5
- class CouldNotInferClassException < ::Exception
6
- attr_reader :sexp
7
-
8
- def initialize(sexp)
9
- @sexp = sexp
10
- end
11
- end
12
-
13
- class Syntax
14
- include Parsing::RubyParsingHelpers
15
- attr_accessor :contents
16
-
17
- def initialize(contents)
18
- @contents = contents
19
- end
20
-
21
- def multiple_factories?
22
- factories_sexp[0] == :block
23
- end
24
-
25
- def parse
26
- factories.map do |x|
27
- representation_from(x)
28
- end
29
-
30
- rescue Racc::ParseError, StringScanner::Error => e
31
- raise ParseException.new("Original exception: #{e.message}\n #{e.backtrace}\nToFactory Error parsing \n#{@contents}\n o")
32
- end
33
-
34
-
35
- def representation_from(x)
36
- Representation.new(name_from(x), parent_from(x), to_ruby(x))
37
- rescue CouldNotInferClassException => e
38
- ruby = to_ruby(e.sexp)
39
- Kernel.warn "ToFactory could not parse\n#{ruby}"
40
- NullRepresentation.new(e.sexp)
41
- end
42
-
43
- def factories
44
- if multiple_factories?
45
- factories_sexp[1..-1]
46
- else
47
- [factories_sexp]
48
- end
49
- end
50
-
51
- def factories_sexp
52
- header? ? sexp[3] : sexp
53
- end
54
-
55
- def name_from(sexp)
56
- sexp[1][3][1]
57
- rescue NoMethodError
58
- raise CouldNotInferClassException.new(sexp)
59
- end
60
-
61
- def header?
62
- sexp[1][1][1] == :FactoryGirl rescue false
63
- end
64
-
65
- def parent_from(x)
66
- # e.g.
67
- #s(:call, nil, :factory, s(:lit, :admin), s(:hash, s(:lit, :parent), s(:lit, :"to_factory/user")))
68
- x[1][4][2][1]
69
- rescue NoMethodError
70
- # e.g.
71
- #s(:call, nil, :factory, s(:lit, :"to_factory/user"))
72
- x[1][3][1]
73
- end
74
-
75
- private
76
-
77
- def sexp
78
- @sexp ||= ruby_parser.process(@contents)
79
- end
80
-
81
- end
82
- end
83
- end