paper_trail_scrapbook 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +52 -0
  3. data/.rubocop.yml +2 -1
  4. data/.ruby-version +1 -0
  5. data/Changelog.md +2 -2
  6. data/Gemfile +2 -0
  7. data/Gemfile.lock +5 -2
  8. data/Rakefile +2 -0
  9. data/lib/paper_trail_scrapbook.rb +2 -4
  10. data/lib/paper_trail_scrapbook/changes.rb +21 -21
  11. data/lib/paper_trail_scrapbook/chapter.rb +2 -0
  12. data/lib/paper_trail_scrapbook/config.rb +4 -2
  13. data/lib/paper_trail_scrapbook/journal_entry.rb +2 -0
  14. data/lib/paper_trail_scrapbook/life_history.rb +2 -0
  15. data/lib/paper_trail_scrapbook/secondary_chapter.rb +2 -0
  16. data/lib/paper_trail_scrapbook/user_journal.rb +2 -0
  17. data/lib/paper_trail_scrapbook/version.rb +3 -1
  18. data/lib/paper_trail_scrapbook/version_helpers.rb +2 -0
  19. data/paper_trail_scrapbook.gemspec +5 -2
  20. data/spec/dummy_app/Rakefile +3 -1
  21. data/spec/dummy_app/app/models/animal.rb +2 -0
  22. data/spec/dummy_app/app/models/article.rb +2 -0
  23. data/spec/dummy_app/app/models/authorship.rb +2 -0
  24. data/spec/dummy_app/app/models/bar_habtm.rb +2 -0
  25. data/spec/dummy_app/app/models/book.rb +2 -0
  26. data/spec/dummy_app/app/models/boolit.rb +2 -0
  27. data/spec/dummy_app/app/models/callback_modifier.rb +2 -0
  28. data/spec/dummy_app/app/models/car.rb +2 -0
  29. data/spec/dummy_app/app/models/cat.rb +2 -0
  30. data/spec/dummy_app/app/models/chapter.rb +2 -0
  31. data/spec/dummy_app/app/models/citation.rb +2 -0
  32. data/spec/dummy_app/app/models/custom_primary_key_record.rb +2 -0
  33. data/spec/dummy_app/app/models/customer.rb +2 -0
  34. data/spec/dummy_app/app/models/document.rb +2 -0
  35. data/spec/dummy_app/app/models/dog.rb +2 -0
  36. data/spec/dummy_app/app/models/editor.rb +2 -0
  37. data/spec/dummy_app/app/models/editorship.rb +2 -0
  38. data/spec/dummy_app/app/models/elephant.rb +2 -0
  39. data/spec/dummy_app/app/models/fluxor.rb +2 -0
  40. data/spec/dummy_app/app/models/foo_habtm.rb +2 -0
  41. data/spec/dummy_app/app/models/foo_widget.rb +2 -0
  42. data/spec/dummy_app/app/models/fruit.rb +2 -0
  43. data/spec/dummy_app/app/models/gadget.rb +2 -0
  44. data/spec/dummy_app/app/models/kitchen/banana.rb +2 -0
  45. data/spec/dummy_app/app/models/legacy_widget.rb +2 -0
  46. data/spec/dummy_app/app/models/line_item.rb +2 -0
  47. data/spec/dummy_app/app/models/not_on_update.rb +2 -0
  48. data/spec/dummy_app/app/models/on/create.rb +2 -0
  49. data/spec/dummy_app/app/models/on/destroy.rb +2 -0
  50. data/spec/dummy_app/app/models/on/empty_array.rb +2 -0
  51. data/spec/dummy_app/app/models/on/update.rb +2 -0
  52. data/spec/dummy_app/app/models/order.rb +2 -0
  53. data/spec/dummy_app/app/models/paragraph.rb +2 -0
  54. data/spec/dummy_app/app/models/person.rb +2 -0
  55. data/spec/dummy_app/app/models/post.rb +2 -0
  56. data/spec/dummy_app/app/models/post_with_status.rb +2 -0
  57. data/spec/dummy_app/app/models/quotation.rb +2 -0
  58. data/spec/dummy_app/app/models/section.rb +2 -0
  59. data/spec/dummy_app/app/models/skipper.rb +2 -0
  60. data/spec/dummy_app/app/models/song.rb +2 -0
  61. data/spec/dummy_app/app/models/thing.rb +2 -0
  62. data/spec/dummy_app/app/models/translation.rb +2 -0
  63. data/spec/dummy_app/app/models/truck.rb +2 -0
  64. data/spec/dummy_app/app/models/vehicle.rb +2 -0
  65. data/spec/dummy_app/app/models/whatchamajigger.rb +2 -0
  66. data/spec/dummy_app/app/models/widget.rb +3 -1
  67. data/spec/dummy_app/app/models/wotsit.rb +2 -0
  68. data/spec/dummy_app/app/versions/custom_primary_key_record_version.rb +2 -0
  69. data/spec/dummy_app/app/versions/joined_version.rb +2 -0
  70. data/spec/dummy_app/app/versions/json_version.rb +2 -0
  71. data/spec/dummy_app/app/versions/kitchen/banana_version.rb +2 -0
  72. data/spec/dummy_app/app/versions/post_version.rb +2 -0
  73. data/spec/dummy_app/config.ru +2 -0
  74. data/spec/dummy_app/config/application.rb +3 -1
  75. data/spec/dummy_app/config/boot.rb +4 -2
  76. data/spec/dummy_app/config/environment.rb +3 -1
  77. data/spec/dummy_app/config/environments/development.rb +2 -0
  78. data/spec/dummy_app/config/environments/production.rb +2 -0
  79. data/spec/dummy_app/config/environments/test.rb +2 -0
  80. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +2 -0
  81. data/spec/dummy_app/config/initializers/inflections.rb +2 -0
  82. data/spec/dummy_app/config/initializers/mime_types.rb +2 -0
  83. data/spec/dummy_app/config/initializers/paper_trail.rb +2 -0
  84. data/spec/dummy_app/config/initializers/secret_token.rb +2 -0
  85. data/spec/dummy_app/config/initializers/session_store.rb +2 -0
  86. data/spec/dummy_app/config/routes.rb +2 -0
  87. data/spec/paper_trail_scrapbook/changes_spec.rb +2 -0
  88. data/spec/paper_trail_scrapbook/chapter_spec.rb +2 -0
  89. data/spec/paper_trail_scrapbook/config_spec.rb +2 -0
  90. data/spec/paper_trail_scrapbook/life_history_spec.rb +8 -6
  91. data/spec/paper_trail_scrapbook/secondary_chapter_spec.rb +2 -0
  92. data/spec/paper_trail_scrapbook/user_journal_spec.rb +47 -43
  93. data/spec/paper_trail_scrapbook/version_helpers_spec.rb +9 -7
  94. data/spec/paper_trail_scrapbook/version_spec.rb +2 -0
  95. data/spec/paper_trail_scrapbook_spec.rb +2 -0
  96. data/spec/spec_helper.rb +3 -1
  97. metadata +20 -5
  98. data/circle.yml +0 -22
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module PaperTrailScrapbook
@@ -1,45 +1,47 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module PaperTrailScrapbook
4
6
  RSpec.describe UserJournal do
5
7
  before do
6
8
  PaperTrailScrapbook.config.whodunnit_class = Person
7
- PaperTrail.request.whodunnit = person.id
9
+ PaperTrail.request.whodunnit = person.id
8
10
 
9
11
  a_ship
10
12
  end
11
13
 
12
- let(:name) {'The Tim Man'}
13
- let(:title) {'How the Grinch stole Xmas'}
14
- let(:a_name) {'Dr. Seuss'}
15
- let(:changes) {'made the following changes:'}
16
- let(:b_changes) {'made the following Book changes:'}
14
+ let(:name) { 'The Tim Man' }
15
+ let(:title) { 'How the Grinch stole Xmas' }
16
+ let(:a_name) { 'Dr. Seuss' }
17
+ let(:changes) { 'made the following changes:' }
18
+ let(:b_changes) { 'made the following Book changes:' }
17
19
 
18
- let(:book) {Book.create!(title: title)}
19
- let(:author) {Person.create!(name: a_name)}
20
- let(:a_ship) {Authorship.create!(book: book, author: author)}
20
+ let(:book) { Book.create!(title: title) }
21
+ let(:author) { Person.create!(name: a_name) }
22
+ let(:a_ship) { Authorship.create!(book: book, author: author) }
21
23
  let(:person) do
22
- who = PaperTrail.request.whodunnit
24
+ who = PaperTrail.request.whodunnit
23
25
  PaperTrail.request.whodunnit = nil
24
- p = Person.new(name: name)
26
+ p = Person.new(name: name)
25
27
  p.save!
26
28
  PaperTrail.request.whodunnit = who
27
29
  p
28
30
  end
29
- let(:format) {PaperTrailScrapbook.config.time_format}
30
- let(:object) {described_class.new(person)}
31
- let(:subject) {object.story}
32
- let(:f_starts) {starts.strftime(format).squeeze(' ')}
33
- let(:f_ends) {ends.strftime(format).squeeze(' ')}
31
+ let(:format) { PaperTrailScrapbook.config.time_format }
32
+ let(:object) { described_class.new(person) }
33
+ let(:subject) { object.story }
34
+ let(:f_starts) { starts.strftime(format).squeeze(' ') }
35
+ let(:f_ends) { ends.strftime(format).squeeze(' ') }
34
36
 
35
37
  describe '#story' do
36
38
  context 'with a provided user' do
37
39
  it 'provides a whole story' do
38
- #expect(object.starts).to eql 'Thursday, 01 Jan 1970 at 12:00 AM'
39
- #expect(object.ends).to eql Time.current.in_time_zone
40
+ # expect(object.starts).to eql 'Thursday, 01 Jan 1970 at 12:00 AM'
41
+ # expect(object.ends).to eql Time.current.in_time_zone
40
42
 
41
43
  expect(subject)
42
- .to match(/Between .* and .*, #{name} #{changes}/)
44
+ .to match(/Between .* and .*, #{name} #{changes}/)
43
45
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
44
46
  expect(subject).to match(/ • title: #{title}/)
45
47
  expect(subject).to match(/On .*, created Person\[#{author.id}\]:/)
@@ -74,43 +76,43 @@ module PaperTrailScrapbook
74
76
  end
75
77
 
76
78
  context 'with a provided class' do
77
- let(:object) {described_class.new(person, klass: Book)}
79
+ let(:object) { described_class.new(person, klass: Book) }
78
80
 
79
81
  it 'provides a story for provided class' do
80
82
  expect(subject)
81
- .to match(/Between .* and .*, #{name} #{b_changes}/)
83
+ .to match(/Between .* and .*, #{name} #{b_changes}/)
82
84
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
83
85
  expect(subject).to match(/ • title: #{title}/)
84
86
  expect(subject).not_to match(/On .*, created Person\[#{author.id}\]:/)
85
87
  expect(subject).not_to match(/ • name: #{a_name}/)
86
88
  expect(subject)
87
- .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
89
+ .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
88
90
  end
89
91
  end
90
92
 
91
93
  context 'with start time and class but no end time' do
92
- let(:object) {described_class.new(person, klass: Book, start: starts)}
93
- let(:starts) {Time.current.advance(minutes: -5)}
94
+ let(:object) { described_class.new(person, klass: Book, start: starts) }
95
+ let(:starts) { Time.current.advance(minutes: -5) }
94
96
 
95
97
  it 'provides a story with start time' do
96
98
  expect(subject)
97
- .to match(/Between #{f_starts} and .*, #{name} #{b_changes}/)
99
+ .to match(/Between #{f_starts} and .*, #{name} #{b_changes}/)
98
100
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
99
101
  expect(subject).to match(/ • title: #{title}/)
100
102
  expect(subject).not_to match(/On .*, created Person\[#{author.id}\]:/)
101
103
  expect(subject).not_to match(/ • name: #{a_name}/)
102
104
  expect(subject)
103
- .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
105
+ .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
104
106
  end
105
107
  end
106
108
 
107
109
  context 'with end time but no start time and no class' do
108
- let(:ends) {Time.current.advance(minutes: 5)}
109
- let(:object) {described_class.new(person, end: ends)}
110
+ let(:ends) { Time.current.advance(minutes: 5) }
111
+ let(:object) { described_class.new(person, end: ends) }
110
112
 
111
113
  it 'provides a story with end time in the future' do
112
114
  expect(subject)
113
- .to match(/Between .* and #{f_ends}, #{name} #{changes}/)
115
+ .to match(/Between .* and #{f_ends}, #{name} #{changes}/)
114
116
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
115
117
  expect(subject).to match(/ • title: #{title}/)
116
118
  expect(subject).to match(/On .*, created Person\[#{author.id}\]:/)
@@ -119,7 +121,7 @@ module PaperTrailScrapbook
119
121
  end
120
122
 
121
123
  describe 'with end time in past' do
122
- let(:ends) {Time.current.advance(minutes: -5)}
124
+ let(:ends) { Time.current.advance(minutes: -5) }
123
125
 
124
126
  it 'provides a story with end time in the past' do
125
127
  expect(subject).not_to match(/#{name} created the following Person/)
@@ -131,13 +133,13 @@ module PaperTrailScrapbook
131
133
  end
132
134
 
133
135
  context 'with start and end times but no class' do
134
- let(:starts) {Time.current.advance(minutes: -4)}
135
- let(:ends) {starts.advance(hours: 1)}
136
- let(:object) {described_class.new(person, start: starts, end: ends)}
136
+ let(:starts) { Time.current.advance(minutes: -4) }
137
+ let(:ends) { starts.advance(hours: 1) }
138
+ let(:object) { described_class.new(person, start: starts, end: ends) }
137
139
 
138
140
  it 'provides a story with start and end times' do
139
141
  expect(subject)
140
- .to match(/Between .* and .*, #{name} #{changes}/)
142
+ .to match(/Between .* and .*, #{name} #{changes}/)
141
143
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
142
144
  expect(subject).to match(/ • title: #{title}/)
143
145
  expect(subject).to match(/On .*, created Person\[#{author.id}\]:/)
@@ -148,8 +150,8 @@ module PaperTrailScrapbook
148
150
  end
149
151
 
150
152
  context 'with start time, end time, and a class' do
151
- let(:starts) {Time.current.advance(minutes: -4)}
152
- let(:ends) {starts.advance(hours: 1)}
153
+ let(:starts) { Time.current.advance(minutes: -4) }
154
+ let(:ends) { starts.advance(hours: 1) }
153
155
  let(:object) do
154
156
  described_class.new(person, klass: Book, start: starts, end: ends)
155
157
  end
@@ -157,19 +159,19 @@ module PaperTrailScrapbook
157
159
  describe 'when time range covers current time' do
158
160
  it 'provides a story for provided class with start and end times' do
159
161
  expect(subject)
160
- .to match(/Between #{f_starts} and #{f_ends}, #{name} #{b_changes}/)
162
+ .to match(/Between #{f_starts} and #{f_ends}, #{name} #{b_changes}/)
161
163
  expect(subject).to match(/On .*, created Book\[#{book.id}\]:/)
162
164
  expect(subject).to match(/ • title: #{title}/)
163
165
  expect(subject)
164
- .not_to match(/On .*, created Person\[#{author.id}\]:/)
166
+ .not_to match(/On .*, created Person\[#{author.id}\]:/)
165
167
  expect(subject).not_to match(/ • name: #{a_name}/)
166
168
  expect(subject)
167
- .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
169
+ .not_to match(/On .*, created Authorship\[#{a_ship.id}\]:/)
168
170
  end
169
171
  end
170
172
 
171
173
  describe 'when time range is completely in the future' do
172
- let(:starts) {Time.current.advance(minutes: 4)}
174
+ let(:starts) { Time.current.advance(minutes: 4) }
173
175
 
174
176
  it 'provides a story' do
175
177
  expect(subject).to eql("Between #{f_starts} and #{f_ends}, #{name}"\
@@ -178,10 +180,12 @@ module PaperTrailScrapbook
178
180
  end
179
181
 
180
182
  describe 'when no time range' do
181
- let(:starts) {nil}
182
- let(:ends) {nil}
183
+ let(:starts) { nil }
184
+ let(:ends) { nil }
183
185
  it 'provides a story' do
184
- expect(subject).to match("Between Thursday, 01 Jan 1970 at 12:00 AM and #{Time.current.in_time_zone.strftime(format).squeeze(' ')}, #{name}"\
186
+ expect(subject)
187
+ .to match('Between Thursday, 01 Jan 1970 at 12:00 AM ' \
188
+ "and #{Time.current.in_time_zone.strftime(format).squeeze(' ')}, #{name}"\
185
189
  " #{b_changes}\n\n".squeeze(' '))
186
190
  end
187
191
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'ostruct'
3
5
 
4
6
  module PaperTrailScrapbook
5
7
  RSpec.describe VersionHelpers do
6
- let(:person) {Person.create!(name: 'The Tim Man')}
7
- let(:book) {Book.create!(title: 'How the Grinch stole Xmas')}
8
+ let(:person) { Person.create!(name: 'The Tim Man') }
9
+ let(:book) { Book.create!(title: 'How the Grinch stole Xmas') }
8
10
  let(:version) do
9
11
  OpenStruct.new(event: 'create',
10
12
  item_type: 'Book',
@@ -12,8 +14,8 @@ module PaperTrailScrapbook
12
14
  created_at: Time.current,
13
15
  version_author: person.id)
14
16
  end
15
- let(:config) {PaperTrailScrapbook.config}
16
- let(:subject) {JournalEntry.new(version)}
17
+ let(:config) { PaperTrailScrapbook.config }
18
+ let(:subject) { JournalEntry.new(version) }
17
19
 
18
20
  before do
19
21
  PaperTrailScrapbook.config.whodunnit_class = Person
@@ -59,7 +61,7 @@ module PaperTrailScrapbook
59
61
  describe '#whenn' do
60
62
  it 'returns version created_at' do
61
63
  expect(subject.whenn)
62
- .to eql(version.created_at.strftime(config.time_format))
64
+ .to eql(version.created_at.strftime(config.time_format))
63
65
  end
64
66
  end
65
67
 
@@ -69,12 +71,12 @@ module PaperTrailScrapbook
69
71
  end
70
72
 
71
73
  context 'garbage' do
72
- let(:subject) {JournalEntry.new(version)}
74
+ let(:subject) { JournalEntry.new(version) }
73
75
  it 'returns expected value' do
74
76
  x = PaperTrailScrapbook.config.events
75
77
  PaperTrailScrapbook.config.events = {}
76
78
 
77
- expect {subject.kind}.to raise_error(ArgumentError, 'incorrect event:create')
79
+ expect { subject.kind }.to raise_error(ArgumentError, 'incorrect event:create')
78
80
 
79
81
  PaperTrailScrapbook.config.events = x
80
82
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module PaperTrailScrapbook
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module PaperTrailScrapbook
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
4
  ENV['RAILS_ENV'] ||= 'test'
3
5
  ENV['DB'] ||= 'sqlite'
@@ -54,7 +56,7 @@ def params_wrapper(args)
54
56
  end
55
57
  end
56
58
 
57
- require File.expand_path('../dummy_app/config/environment', __FILE__)
59
+ require File.expand_path('dummy_app/config/environment', __dir__)
58
60
  require 'rspec/rails'
59
61
  require 'ffaker'
60
62
  require 'timecop'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_trail_scrapbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timothy Chambers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-11 00:00:00.000000000 Z
11
+ date: 2018-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -218,6 +218,20 @@ dependencies:
218
218
  - - "~>"
219
219
  - !ruby/object:Gem::Version
220
220
  version: '3.6'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rspec_junit_formatter
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
221
235
  - !ruby/object:Gem::Dependency
222
236
  name: rubocop
223
237
  requirement: !ruby/object:Gem::Requirement
@@ -280,11 +294,13 @@ executables: []
280
294
  extensions: []
281
295
  extra_rdoc_files: []
282
296
  files:
297
+ - ".circleci/config.yml"
283
298
  - ".codeclimate.yml"
284
299
  - ".gitignore"
285
300
  - ".rspec"
286
301
  - ".rubocop.yml"
287
302
  - ".ruby-gemset"
303
+ - ".ruby-version"
288
304
  - CODE_OF_CONDUCT.md
289
305
  - Changelog.md
290
306
  - Gemfile
@@ -292,7 +308,6 @@ files:
292
308
  - LICENSE.md
293
309
  - README.md
294
310
  - Rakefile
295
- - circle.yml
296
311
  - lib/paper_trail_scrapbook.rb
297
312
  - lib/paper_trail_scrapbook/changes.rb
298
313
  - lib/paper_trail_scrapbook/chapter.rb
@@ -401,7 +416,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
401
416
  requirements:
402
417
  - - ">="
403
418
  - !ruby/object:Gem::Version
404
- version: 2.2.0
419
+ version: 2.3.0
405
420
  required_rubygems_version: !ruby/object:Gem::Requirement
406
421
  requirements:
407
422
  - - ">="
@@ -409,7 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
409
424
  version: 1.3.6
410
425
  requirements: []
411
426
  rubyforge_project:
412
- rubygems_version: 2.7.6
427
+ rubygems_version: 2.5.2.3
413
428
  signing_key:
414
429
  specification_version: 4
415
430
  summary: Paper Trail Scrapbook
data/circle.yml DELETED
@@ -1,22 +0,0 @@
1
- ---
2
- machine:
3
- ruby:
4
- version: '2.3.0'
5
- environment:
6
- CC_TEST_REPORTER_ID: e0db6fd6beb8208980b2908947735982fb5a4e8a9a3cb742dc194e00df79f388
7
-
8
- dependencies:
9
- pre:
10
- - gem install bundler
11
-
12
- database:
13
- override:
14
- - rake -T -f spec/dummy_app/Rakefile
15
- - bundle exec rake -f spec/dummy_app/Rakefile db:setup
16
-
17
- test:
18
- override:
19
- - bundle exec rake spec
20
- - CODECLIMATE_REPO_TOKEN=e0db6fd6beb8208980b2908947735982fb5a4e8a9a3cb742dc194e00df79f388 bundle exec codeclimate-test-reporter
21
-
22
-