to_factory 2.1.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.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +35 -0
- data/.rubocop-disabled.yml +95 -0
- data/.rubocop-enabled.yml +1194 -0
- data/.rubocop.yml +938 -0
- data/CHANGELOG.md +11 -0
- data/Gemfile +6 -1
- data/README.md +2 -11
- data/Rakefile +17 -9
- data/lib/to_factory/collation.rb +9 -9
- data/lib/to_factory/file_sync.rb +10 -10
- data/lib/to_factory/file_writer.rb +1 -1
- data/lib/to_factory/finders/factory.rb +1 -1
- data/lib/to_factory/finders/model.rb +2 -4
- data/lib/to_factory/generation/attribute.rb +6 -10
- data/lib/to_factory/generation/factory.rb +3 -3
- data/lib/to_factory/klass_inference.rb +4 -6
- data/lib/to_factory/options_parser.rb +4 -4
- data/lib/to_factory/parsing/file.rb +85 -14
- data/lib/to_factory/representation.rb +9 -6
- data/lib/to_factory/version.rb +1 -1
- data/lib/to_factory.rb +7 -8
- data/spec/db/migrate/1_create_users.rb +4 -4
- data/spec/db/migrate/2_create_projects.rb +4 -4
- data/spec/db/migrate/3_create_not_namespaced.rb +4 -4
- data/spec/db/migrate/4_add_birthday_to_users.rb +3 -3
- data/spec/db/migrate/5_add_serialized_attributes_to_users.rb +3 -3
- data/spec/example_factories/admin.rb +6 -6
- data/spec/example_factories/admin_with_header.rb +7 -7
- data/spec/example_factories/inherited_project_with_header.rb +7 -0
- data/spec/example_factories/project_with_header.rb +4 -4
- data/spec/example_factories/user.rb +5 -5
- data/spec/example_factories/user_admin.rb +11 -11
- data/spec/example_factories/user_admin_root.rb +12 -13
- data/spec/example_factories/user_admin_super_admin.rb +6 -6
- data/spec/example_factories/user_admin_with_header.rb +12 -12
- data/spec/example_factories/user_with_header.rb +6 -6
- data/spec/integration/empty_factory_file_spec.rb +2 -2
- data/spec/integration/file_sync_spec.rb +16 -17
- data/spec/integration/file_writer_spec.rb +13 -9
- data/spec/integration/lint_spec.rb +4 -3
- data/spec/integration/multiple_to_factory_calls_spec.rb +37 -35
- data/spec/integration/non_active_record_classes_spec.rb +40 -0
- data/spec/integration/to_factory_method_spec.rb +21 -18
- data/spec/spec_helper.rb +8 -8
- data/spec/support/data_creation.rb +11 -13
- data/spec/support/match_sexp.rb +0 -1
- data/spec/support/non_active_record/inherited_project.rb +3 -0
- data/spec/support/non_active_record/project.rb +3 -0
- data/spec/support/non_active_record/some_other_service_inheriting_from_something_else.rb +4 -0
- data/spec/support/non_active_record/some_service.rb +2 -0
- data/spec/support/non_active_record/something_else.rb +2 -0
- data/spec/support/ruby_parser_exception_causing_string.rb +29 -29
- data/spec/unit/collation_spec.rb +9 -10
- data/spec/unit/file_writer_spec.rb +4 -8
- data/spec/unit/finders/factory_spec.rb +7 -9
- data/spec/unit/finders/model_spec.rb +6 -9
- data/spec/unit/generation/attribute_spec.rb +11 -12
- data/spec/unit/generation/factory_spec.rb +14 -16
- data/spec/unit/parsing/file_spec.rb +9 -9
- data/spec/unit/parsing/klass_inference_spec.rb +5 -7
- data/to_factory.gemspec +14 -10
- metadata +89 -31
- data/.travis.yml +0 -16
- data/lib/to_factory/parsing/syntax.rb +0 -83
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: to_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
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:
|
11
|
+
date: 2022-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: factory_bot
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby2ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,44 +42,44 @@ dependencies:
|
|
42
42
|
name: activerecord
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: database_cleaner
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +94,48 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-github
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: rspec
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,26 +154,30 @@ dependencies:
|
|
112
154
|
name: rake
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
|
-
- - "
|
157
|
+
- - ">="
|
116
158
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
159
|
+
version: 12.3.3
|
118
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:
|
125
|
-
description: Autogenerate and append/create
|
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
|
-
- ".
|
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
|
@@ -173,6 +219,7 @@ files:
|
|
173
219
|
- spec/integration/file_writer_spec.rb
|
174
220
|
- spec/integration/lint_spec.rb
|
175
221
|
- spec/integration/multiple_to_factory_calls_spec.rb
|
222
|
+
- spec/integration/non_active_record_classes_spec.rb
|
176
223
|
- spec/integration/to_factory_method_spec.rb
|
177
224
|
- spec/spec_helper.rb
|
178
225
|
- spec/support/broken_models/invalid_ruby_file.rb
|
@@ -182,6 +229,11 @@ files:
|
|
182
229
|
- spec/support/models/not_active_record.rb
|
183
230
|
- spec/support/models/project.rb
|
184
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
|
185
237
|
- spec/support/ruby_parser_exception_causing_string.rb
|
186
238
|
- spec/unit/collation_spec.rb
|
187
239
|
- spec/unit/file_writer_spec.rb
|
@@ -208,12 +260,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
260
|
version: '0'
|
209
261
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
262
|
requirements:
|
211
|
-
- - "
|
263
|
+
- - ">"
|
212
264
|
- !ruby/object:Gem::Version
|
213
|
-
version:
|
265
|
+
version: 1.3.1
|
214
266
|
requirements: []
|
215
|
-
|
216
|
-
rubygems_version: 2.4.5.1
|
267
|
+
rubygems_version: 3.3.26
|
217
268
|
signing_key:
|
218
269
|
specification_version: 4
|
219
270
|
summary: Turn ActiveRecord instances into factories
|
@@ -225,6 +276,7 @@ test_files:
|
|
225
276
|
- spec/db/migrate/5_add_serialized_attributes_to_users.rb
|
226
277
|
- spec/example_factories/admin.rb
|
227
278
|
- spec/example_factories/admin_with_header.rb
|
279
|
+
- spec/example_factories/inherited_project_with_header.rb
|
228
280
|
- spec/example_factories/project_with_header.rb
|
229
281
|
- spec/example_factories/user.rb
|
230
282
|
- spec/example_factories/user_admin.rb
|
@@ -238,6 +290,7 @@ test_files:
|
|
238
290
|
- spec/integration/file_writer_spec.rb
|
239
291
|
- spec/integration/lint_spec.rb
|
240
292
|
- spec/integration/multiple_to_factory_calls_spec.rb
|
293
|
+
- spec/integration/non_active_record_classes_spec.rb
|
241
294
|
- spec/integration/to_factory_method_spec.rb
|
242
295
|
- spec/spec_helper.rb
|
243
296
|
- spec/support/broken_models/invalid_ruby_file.rb
|
@@ -247,6 +300,11 @@ test_files:
|
|
247
300
|
- spec/support/models/not_active_record.rb
|
248
301
|
- spec/support/models/project.rb
|
249
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
|
250
308
|
- spec/support/ruby_parser_exception_causing_string.rb
|
251
309
|
- spec/unit/collation_spec.rb
|
252
310
|
- spec/unit/file_writer_spec.rb
|
data/.travis.yml
DELETED
@@ -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.join("\n")}\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
|