to_factory 0.2.0 → 0.2.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2b7199b7f56596066bd61469c11ed611c8559011
4
+ data.tar.gz: 9799646595d3bb9835d61cceffde7514334bfc9a
5
+ SHA512:
6
+ metadata.gz: eb276d7e60f92af6de9fb7a6c6fa0883cdffbd43d585141d359bb64b6e4539936d7fe40545453026419ccfa513a72db5804eecbe80ffd75f42d886d2f7c61e1c
7
+ data.tar.gz: 9345ae024ec70089a05d6430e1039691bbfad6eb43833525e8bb1ed4d7ba9054560a5d15b780617f4ede28efb51bc88c3e770250a24883ecc435563f05efc804
data/README.md CHANGED
@@ -11,10 +11,13 @@ ToFactory :wrench:
11
11
 
12
12
  Easily add factories with valid data for an existing project.
13
13
 
14
+ If you find yourself retro-fitting tests this gem will save you some of the legwork.
15
+
14
16
  * auto-generate all factories
15
17
  * adhoc generate from existing records
16
18
  * unintrusively update factory files in place
17
- * Parses and writes both new `FactoryGirl`, syntax or older `Factory.define` syntax
19
+ * display factory definition for a record
20
+ * parse and write `FactoryGirl` syntax or older `Factory.define` syntax
18
21
 
19
22
  Tested against Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.x, 2.2.0
20
23
 
@@ -63,11 +66,6 @@ ToFactory(exclude: [User, Project])
63
66
  #Use Adhoc instances from the console
64
67
  ToFactory User.last
65
68
 
66
- #List defined factory names
67
- ToFactory.definitions
68
- #=> [:user, :admin, :project]
69
-
70
-
71
69
  #writes to spec/factories/user.rb
72
70
  FactoryGirl.define
73
71
  factory(:user) do |u|
@@ -76,6 +74,16 @@ FactoryGirl.define
76
74
  end
77
75
  end
78
76
 
77
+ #List defined factory names
78
+ ToFactory.definitions
79
+ #=> [:user, :admin, :project]
80
+
81
+ #Display definition from record
82
+ ToFactory.definition_for @user
83
+
84
+ #Display existing definition from name
85
+ ToFactory.definition_for :admin
86
+
79
87
  #doesn't overwrite existing factories
80
88
  ToFactory User.last
81
89
  #Exception =>
@@ -16,8 +16,8 @@ module ToFactory
16
16
  end
17
17
 
18
18
  def organize
19
- representations.group_by(&:klass).inject({}) do |o, (klass,r)|
20
- o[klass] = r.sort_by(&:hierarchy_order)
19
+ representations.group_by{|i| i.klass.name.underscore}.inject({}) do |o, (klass_name,r)|
20
+ o[klass_name] = r.sort_by(&:hierarchy_order)
21
21
  o
22
22
  end
23
23
  end
@@ -54,7 +54,7 @@ module ToFactory
54
54
  end
55
55
 
56
56
  def raise_already_exists!(keys)
57
- raise ToFactory::AlreadyExists.new "an item for each of the following keys #{keys} already exists"
57
+ raise ToFactory::AlreadyExists.new "an item for each of the following keys #{keys.inspect} already exists"
58
58
  end
59
59
  end
60
60
  end
@@ -5,8 +5,8 @@ module ToFactory
5
5
  end
6
6
 
7
7
  def write(definitions)
8
- definitions.each do |klass, representations|
9
- write_to(name_from klass) do
8
+ definitions.each do |klass_name, representations|
9
+ write_to(klass_name) do
10
10
  wrap_factories(representations.map(&:definition))
11
11
  end
12
12
  end
@@ -14,10 +14,6 @@ module ToFactory
14
14
 
15
15
  private
16
16
 
17
- def name_from(klass)
18
- klass.name.underscore.gsub /^"|"$/, ""
19
- end
20
-
21
17
  def write_to(name)
22
18
  mkdir(name)
23
19
 
@@ -35,9 +31,9 @@ module ToFactory
35
31
  end
36
32
 
37
33
  def modern_header(definitions)
38
- out = "FactoryGirl.define do\n"
39
- out << definitions.join("\n")
40
- out << "\nend\n"
34
+ out = "FactoryGirl.define do\n"
35
+ out << definitions.join("\n\n")
36
+ out << "end"
41
37
  end
42
38
 
43
39
  def mkdir(name)
@@ -26,8 +26,6 @@ module ToFactory
26
26
  formatted
27
27
  end
28
28
 
29
- private
30
-
31
29
  def format(value, nested)
32
30
  case value
33
31
  when Time, DateTime
@@ -37,12 +35,30 @@ module ToFactory
37
35
  when Hash
38
36
  inspect_hash(value, nested)
39
37
  when Array
40
- value.map{|v| inspect_value(v)}
38
+ inspect_array(value, nested)
39
+ when String
40
+ validate_parseable!(value).inspect
41
41
  else
42
42
  value.inspect
43
43
  end
44
44
  end
45
45
 
46
+ private
47
+
48
+ def validate_parseable!(value)
49
+ return value if parse(value)
50
+
51
+ "ToFactory: RubyParser exception parsing this attribute after factory generation"
52
+ end
53
+
54
+ def parse(value)
55
+ @parser ||= RubyParser.new
56
+ @parser.parse(value)
57
+ true
58
+ rescue
59
+ false
60
+ end
61
+
46
62
  def inspect_time(value)
47
63
  time = in_utc(value).strftime("%Y-%m-%dT%H:%M%Z").inspect
48
64
  time.gsub(/UTC"$/, "Z\"").gsub(/GMT"$/, "Z\"")
@@ -60,6 +76,11 @@ module ToFactory
60
76
  end
61
77
  end
62
78
 
79
+ def inspect_array(value, nested)
80
+ values = value.map{|v| format(v, nested)}.join(", ")
81
+ "[#{values}]"
82
+ end
83
+
63
84
  def key_value_pair(key, value)
64
85
  formatted_key = inspect_value(key, true)
65
86
  formatted_value = inspect_value(value.fetch(key), true)
@@ -19,20 +19,12 @@ module ToFactory
19
19
 
20
20
  def header(&block)
21
21
  if ToFactory.new_syntax?
22
- modern_header &block
22
+ generic_header(" factory", "", " end", &block)
23
23
  else
24
- header_factory_girl_1 &block
24
+ generic_header("Factory.define", " |o|", "end", &block)
25
25
  end
26
26
  end
27
27
 
28
- def modern_header(&block)
29
- generic_header("factory", "", &block)
30
- end
31
-
32
- def header_factory_girl_1(&block)
33
- generic_header("Factory.define", " |o|", &block)
34
- end
35
-
36
28
  def factory_attribute(attr, value)
37
29
  Attribute.new(attr, value).to_s
38
30
  end
@@ -49,10 +41,10 @@ module ToFactory
49
41
  @representation.parent_name
50
42
  end
51
43
 
52
- def generic_header(factory_start, block_arg, &block)
53
- out = " #{factory_start}(:#{name}#{parent_clause}) do#{block_arg}\n"
44
+ def generic_header(factory_start, block_arg, ending, &block)
45
+ out = "#{factory_start}(:#{name}#{parent_clause}) do#{block_arg}\n"
54
46
  out << yield.to_s
55
- out << " end\n"
47
+ out << "#{ending}\n"
56
48
  end
57
49
 
58
50
  def parent_clause
@@ -1,3 +1,3 @@
1
1
  module ToFactory
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/to_factory.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'fileutils'
2
+
1
3
  require "to_factory/version"
2
4
  require "to_factory/config"
3
5
  require "to_factory/generation/factory"
@@ -14,6 +16,7 @@ require "to_factory/options_parser"
14
16
 
15
17
  module ToFactory
16
18
  class MissingActiveRecordInstanceException < Exception;end
19
+ class NotFoundError < Exception;end
17
20
 
18
21
  class << self
19
22
  def new_syntax?
@@ -27,9 +30,24 @@ module ToFactory
27
30
  false
28
31
  end
29
32
 
33
+ def definition_for(item)
34
+ if item.is_a? ActiveRecord::Base
35
+ Representation.from(item).definition
36
+ else
37
+ if found = representations.find{|r| r.name.to_s == item.to_s }
38
+ found.definition
39
+ else
40
+ raise NotFoundError.new "No definition found for #{item}"
41
+ end
42
+ end
43
+ end
44
+
30
45
  def definitions
31
- results = Finders::Factory.new.call
32
- results.map(&:name)
46
+ representations.map(&:name)
47
+ end
48
+
49
+ def representations
50
+ Finders::Factory.new.call
33
51
  end
34
52
  end
35
53
  end
@@ -9,7 +9,7 @@ describe ToFactory::FileWriter do
9
9
  fs = ToFactory::FileSync.new
10
10
  representations = fs.all_representations
11
11
  #sanity check generation isn't broken
12
- expect(representations.keys).to eq [ToFactory::User]
12
+ expect(representations.keys).to eq ["to_factory/user"]
13
13
  expect(representations.values[0][0]).to be_a ToFactory::Representation
14
14
 
15
15
  fw.write representations
@@ -23,6 +23,22 @@ describe ToFactory do
23
23
 
24
24
  end
25
25
 
26
+ describe "ToFactory.definition_for" do
27
+ let(:expected_user_file) { File.read "./spec/example_factories/#{version}_syntax/user.rb"}
28
+ it do
29
+ expect(ToFactory.definition_for user).to match_sexp expected_user_file
30
+ end
31
+
32
+ it do
33
+ ToFactory(user)
34
+ expect(ToFactory.definition_for :"to_factory/user").to match_sexp expected_user_file
35
+ end
36
+
37
+ it "raises a not found error" do
38
+ expect(lambda{ToFactory.definition_for :"to_factory/user"}).to raise_error ToFactory::NotFoundError
39
+ end
40
+ end
41
+
26
42
  describe "Object#ToFactory" do
27
43
  context "with multiple levels of parent classes" do
28
44
  let(:filename) { "spec/example_factories/#{version}_syntax/#{'user_admin_super_admin'}.rb"}
@@ -43,8 +59,13 @@ describe ToFactory do
43
59
 
44
60
  it "generates all factories" do
45
61
  ToFactory()
62
+ #simple check for equivalent ruby
46
63
  expect(user_file) .to match_sexp expected_user_file
47
64
  expect(project_file).to match_sexp expected_project_file
65
+
66
+ #once we are sure output is equivalent ruby, check output is identical
67
+ expect(user_file.chomp) .to eq expected_user_file.chomp
68
+ expect(project_file.chomp).to eq expected_project_file.chomp
48
69
  end
49
70
 
50
71
  def user_file_includes(content)
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,6 @@ rescue LoadError
6
6
  end
7
7
 
8
8
  require 'active_record'
9
- require 'fileutils'
10
9
  require 'active_support/core_ext/string'
11
10
  require 'active_support/core_ext/hash'
12
11
  require "sqlite3"
@@ -33,7 +33,7 @@ describe ToFactory::Collation do
33
33
  pre_existing = [ admin, user, super_admin ]
34
34
 
35
35
  result = ToFactory::Collation.organize(new_definitions, pre_existing)
36
- result = result[ToFactory::User]
36
+ result = result["to_factory/user"]
37
37
  expect(result.map &:hierarchy_order).to eq [1,2,3,4]
38
38
  expect(result).to eq [user, admin, super_admin, root]
39
39
  end
@@ -13,8 +13,8 @@ describe ToFactory::FileWriter do
13
13
  it "adds factories for all models" do
14
14
  user_representation = double :name => :user, "definition" => "factory a"
15
15
  project_representation = double :name => "project", :definition =>"factory b"
16
- fw.write({ToFactory::User =>[user_representation],
17
- ToFactory::Project => [project_representation]
16
+ fw.write({"to_factory/user" =>[user_representation],
17
+ "to_factory/project" => [project_representation]
18
18
  })
19
19
 
20
20
  if ToFactory.new_syntax?
@@ -22,6 +22,25 @@ describe ToFactory::Generation::Attribute do
22
22
 
23
23
  expect(attribute.inspect_value(hash)).to eq expected
24
24
  end
25
+
26
+ it "handles arrays correctly" do
27
+ expected = "[1, 2, :a, \"4\"]"
28
+
29
+ input = [1, 2, :a, "4"]
30
+ expect(attribute.format(input, false)).to eq expected
31
+ end
25
32
  end
26
33
 
34
+ if RUBY_VERSION =~ /\A1\.8/
35
+ it "alters attributes that are unparseable by RubyParser" do
36
+ #when reparsing the generated files, we don't want the parser itself
37
+ #to raise an exception, rather than fix RubyParser now, a hotfix is to
38
+ #warn about these attributes and replace them with something parseable
39
+ value = File.read("./spec/support/ruby_parser_exception_causing_string.rb")
40
+ expect(lambda{RubyParser.new.parse(value)}).to raise_error StringScanner::Error
41
+ result = attribute.inspect_value(value)
42
+ expect(lambda{RubyParser.new.parse(result)}).not_to raise_error
43
+ expect(result).to match /ToFactory: RubyParser exception/
44
+ end
45
+ end
27
46
  end
metadata CHANGED
@@ -1,177 +1,137 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: to_factory
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Mark Burns
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2015-01-08 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: sqlite3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.6
20
+ type: :development
23
21
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 23
30
- segments:
31
- - 1
32
- - 3
33
- - 6
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
34
26
  version: 1.3.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: database_cleaner
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.0
35
34
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: ruby-debug
39
35
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
43
45
  - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
49
48
  type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: database_cleaner
53
49
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
57
- - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 13
60
- segments:
61
- - 0
62
- - 3
63
- version: "0.3"
64
- type: :development
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
67
56
  name: ruby2ruby
68
- prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
72
59
  - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
78
62
  type: :runtime
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: activerecord
82
63
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: activerecord
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
86
73
  - - ">"
87
- - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 2
91
- - 0
92
- version: "2.0"
93
- - - <
94
- - !ruby/object:Gem::Version
95
- hash: 27
96
- segments:
97
- - 4
98
- - 0
99
- version: "4.0"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
100
76
  type: :runtime
101
- version_requirements: *id005
102
- - !ruby/object:Gem::Dependency
103
- name: i18n
104
77
  prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - <
109
- - !ruby/object:Gem::Version
110
- hash: 5
111
- segments:
112
- - 0
113
- - 7
114
- version: "0.7"
115
- type: :runtime
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
118
84
  name: factory_girl
119
- prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - <
124
- - !ruby/object:Gem::Version
125
- hash: 3
126
- segments:
127
- - 2
128
- - 0
129
- version: "2.0"
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.5'
130
90
  type: :development
131
- version_requirements: *id007
132
- - !ruby/object:Gem::Dependency
133
- name: rspec
134
91
  prerelease: false
135
- requirement: &id008 !ruby/object:Gem::Requirement
136
- none: false
137
- requirements:
138
- - - ~>
139
- - !ruby/object:Gem::Version
140
- hash: 7
141
- segments:
142
- - 3
143
- - 0
144
- version: "3.0"
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
145
104
  type: :development
146
- version_requirements: *id008
147
- - !ruby/object:Gem::Dependency
148
- name: rake
149
105
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
151
- none: false
152
- requirements:
153
- - - ~>
154
- - !ruby/object:Gem::Version
155
- hash: 35
156
- segments:
157
- - 10
158
- - 0
159
- version: "10.0"
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
160
118
  type: :development
161
- version_requirements: *id009
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.0'
162
125
  description: Autogenerate and append/create factory_girl definitions from the console
163
- email:
126
+ email:
164
127
  - markthedeveloper@gmail.com
165
128
  executables: []
166
-
167
129
  extensions: []
168
-
169
130
  extra_rdoc_files: []
170
-
171
- files:
172
- - .gitignore
173
- - .rspec
174
- - .travis.yml
131
+ files:
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - ".travis.yml"
175
135
  - Gemfile
176
136
  - README.md
177
137
  - Rakefile
@@ -227,6 +187,7 @@ files:
227
187
  - spec/support/models/not_active_record.rb
228
188
  - spec/support/models/project.rb
229
189
  - spec/support/models/user.rb
190
+ - spec/support/ruby_parser_exception_causing_string.rb
230
191
  - spec/unit/collation_spec.rb
231
192
  - spec/unit/file_writer_spec.rb
232
193
  - spec/unit/finders/factory_spec.rb
@@ -237,41 +198,31 @@ files:
237
198
  - spec/unit/parsing/klass_inference_spec.rb
238
199
  - tmp/.keep
239
200
  - to_factory.gemspec
240
- has_rdoc: true
241
- homepage: ""
242
- licenses:
201
+ homepage: ''
202
+ licenses:
243
203
  - MIT
204
+ metadata: {}
244
205
  post_install_message:
245
206
  rdoc_options: []
246
-
247
- require_paths:
207
+ require_paths:
248
208
  - lib
249
- required_ruby_version: !ruby/object:Gem::Requirement
250
- none: false
251
- requirements:
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
252
211
  - - ">="
253
- - !ruby/object:Gem::Version
254
- hash: 3
255
- segments:
256
- - 0
257
- version: "0"
258
- required_rubygems_version: !ruby/object:Gem::Requirement
259
- none: false
260
- requirements:
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
261
216
  - - ">="
262
- - !ruby/object:Gem::Version
263
- hash: 3
264
- segments:
265
- - 0
266
- version: "0"
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
267
219
  requirements: []
268
-
269
220
  rubyforge_project:
270
- rubygems_version: 1.6.2
221
+ rubygems_version: 2.4.5
271
222
  signing_key:
272
- specification_version: 3
223
+ specification_version: 4
273
224
  summary: Turn ActiveRecord instances into factories
274
- test_files:
225
+ test_files:
275
226
  - spec/db/migrate/1_create_users.rb
276
227
  - spec/db/migrate/2_create_projects.rb
277
228
  - spec/db/migrate/3_create_not_namespaced.rb
@@ -305,6 +256,7 @@ test_files:
305
256
  - spec/support/models/not_active_record.rb
306
257
  - spec/support/models/project.rb
307
258
  - spec/support/models/user.rb
259
+ - spec/support/ruby_parser_exception_causing_string.rb
308
260
  - spec/unit/collation_spec.rb
309
261
  - spec/unit/file_writer_spec.rb
310
262
  - spec/unit/finders/factory_spec.rb