make_it_so 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9ac6f0d77fb6e01dd7624748326a46c41d6783e2
4
- data.tar.gz: c09977db2febc42710977548d5e7bb938fe7be3c
2
+ SHA256:
3
+ metadata.gz: 2eb6df0b9f858c51c806d331ae101abb19f4b4ce12403073c78499a751673722
4
+ data.tar.gz: 92d50506cb7e2dd187c1031b9851b1d32c2f79f72b61a77e0acbddf9c3bf30f5
5
5
  SHA512:
6
- metadata.gz: 6fadff30e6ccc16cbfe781dd9973a0f02b889581a60f3dd8e5369c634122177bdb4bb0ab91c55d943372be1e5f7fd2e77ad11613b9ff8bce290e293aba492209
7
- data.tar.gz: e97860de45eb65ece6811879340cd38b770cdc8843bb569cf82366ec624f444d375c3056d65a84e3c0fcf4ca6c5c8b8327c740f8c570c958ae0bf43a3b64643d
6
+ metadata.gz: 7b67a140d54c639e3c2243179c73024e44931cfe45aa5b5e60b5b6c5b51a732c142e2ad73c05490db7dd8a00ddfb05f145f36b3a5be8f5b92b53f1382580b79f
7
+ data.tar.gz: 7f3b6b7c5ee3792f331f90d6922c13867bb48b2a79259ba02b254d0fc594b89646f930a6b196cd3767b49aabe121829e5f3c1078847b7cfc5f9276f89862bdb0
data/Gemfile CHANGED
@@ -1,10 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.4.2'
3
+ ruby '2.6.3'
4
4
 
5
5
  # Specify your gem's dependencies in make_it_so.gemspec
6
6
  gemspec
7
7
 
8
8
  group :development do
9
9
  gem 'pry'
10
+ gem 'solargraph'
10
11
  end
data/README.md CHANGED
@@ -41,7 +41,7 @@ By default, the generator will create a Rails app with the following options act
41
41
  - Postgres
42
42
  - Foundation
43
43
  - React
44
- - Karma
44
+ - Jest
45
45
 
46
46
  To take advantage of view-specific javascript, inject a script tag at the end of the body tag. Javascript should always be the last thing loaded on the page. In view logic you can do the following:
47
47
 
@@ -53,7 +53,7 @@ var widget = new Something.Widget('foo');
53
53
  <% end %>
54
54
  ```
55
55
 
56
- There is experimental support for a `--jest` flag that will use Jest for client side testing instead of karma/jasmine.
56
+ Using the `--js-test-lib` flag, it is also possible to set up a Karma/Jasmine test framework instead of Jest (`--js-test-lib karma`) or to omit either framework (`--js-test-lib false`).
57
57
 
58
58
  ### Sinatra
59
59
 
@@ -52,15 +52,11 @@ module MakeItSo
52
52
  default: true,
53
53
  desc: 'Generate React setup'
54
54
 
55
- class_option :karma,
56
- type: :boolean,
57
- default: true,
58
- desc: 'Generate karma testing setup'
59
-
60
- class_option :jest,
61
- type: :boolean,
62
- default: false,
63
- desc: 'Generate jest testing setup'
55
+ class_option :js_test_lib,
56
+ type: :string,
57
+ default: "jest",
58
+ desc:
59
+ "Generate Jest testing framework (default), Karma/Jasmine ('karma'), or no framework ('false')"
64
60
 
65
61
  def initialize(*args)
66
62
  super
@@ -106,13 +102,13 @@ module MakeItSo
106
102
  build 'react'
107
103
  end
108
104
 
109
- if options[:jest]
105
+ if options[:js_test_lib] == "jest"
110
106
  build 'jest'
111
- elsif options[:karma]
107
+ elsif options[:js_test_lib] == "karma"
112
108
  build 'karma'
113
109
  end
114
110
 
115
- if options[:react] || options[:jest] || options[:karma]
111
+ if options[:react] || options[:js_test_lib]
116
112
  build 'yarn_install'
117
113
  end
118
114
  end
@@ -4,7 +4,7 @@ module MakeItSo
4
4
  desc "rails <app_name>",
5
5
  "generates a rails application based on your specifications"
6
6
  option :devise, type: :boolean
7
- option :jest, type: :boolean
7
+ option :js_test_lib, default: "jest"
8
8
  def rails(app_name)
9
9
  MakeItSo::RailsAppGenerator.start(ARGV[1..-1])
10
10
  end
@@ -66,6 +66,8 @@ module MakeItSo
66
66
 
67
67
  json["scripts"] ||= {}
68
68
  json["scripts"]["start"] = "./bin/webpack-dev-server"
69
+
70
+ json["dependencies"].delete("babel-preset-react")
69
71
  end
70
72
 
71
73
  inside 'app/javascript/packs' do
@@ -76,7 +78,7 @@ module MakeItSo
76
78
 
77
79
  def karma
78
80
  after_bundle do
79
- unparsed_json = snippet('js_testing_deps.json')
81
+ unparsed_json = snippet('js_karma_jasmine_testing_deps.json')
80
82
  parsed_json = JSON.parse(unparsed_json)
81
83
 
82
84
  modify_json(package_json_file) do |json|
@@ -95,6 +97,9 @@ module MakeItSo
95
97
  append_to_file '.gitignore' do
96
98
  "coverage/*\n"
97
99
  end
100
+
101
+ remove_file '.babelrc'
102
+ template '.babelrc'
98
103
  end
99
104
  end
100
105
 
@@ -131,18 +136,8 @@ module MakeItSo
131
136
  })
132
137
  end
133
138
 
134
- run 'touch .babelrc'
135
- modify_json(File.join(destination_root, '.babelrc')) do |json|
136
- json["env"] ||= {}
137
- json["env"]["test"] ||= {}
138
- json["env"]["test"].merge!({
139
- "env": {
140
- "test": {
141
- "presets": ["react", "env"],
142
- }
143
- }
144
- })
145
- end
139
+ remove_file '.babelrc'
140
+ template '.babelrc'
146
141
  end
147
142
  end
148
143
 
@@ -251,7 +246,7 @@ module MakeItSo
251
246
  #note: temporary fix that can be removed once devise progresses #beyond v4.4.3
252
247
  # https://github.com/plataformatec/devise/pull/4869/files
253
248
  inside 'config/initializers' do
254
- insert_into_file 'devise.rb',
249
+ insert_into_file 'devise.rb',
255
250
  after: "Devise.setup do |config|" do
256
251
  " config.secret_key = Rails.application.secret_key_base\n"
257
252
  end
@@ -278,14 +273,12 @@ module MakeItSo
278
273
  end
279
274
 
280
275
  def foundation_dependency
281
- @generator.gem 'foundation-rails', '~> 5.0'
276
+ @generator.gem 'foundation-rails', '~> 6.5'
282
277
 
283
278
  after_bundle do
284
279
  generate 'foundation:install foundation'
285
280
  # foundation-rails generates an application layout so we
286
281
  # must remove it
287
- # there is a pull request open to skip this:
288
- # https://github.com/zurb/foundation-rails/pull/108
289
282
  remove_file 'app/views/layouts/foundation.html.erb'
290
283
 
291
284
  inside 'app/assets/javascripts' do
@@ -297,10 +290,10 @@ module MakeItSo
297
290
  end
298
291
 
299
292
  protected
300
- PACKAGE_PATH = 'package.json'
301
- WEBCONFIG_PATH = 'webpack.config.js'
302
293
 
303
- protected
294
+ PACKAGE_PATH = "package.json"
295
+ WEBCONFIG_PATH = "webpack.config.js"
296
+
304
297
  def parsed_package_json
305
298
  @package_json ||= parse_json_file(package_json_file)
306
299
  end
@@ -1,3 +1,3 @@
1
1
  module MakeItSo
2
- VERSION = "0.4.5"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -23,9 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency "activerecord", "~> 5.2"
24
24
  spec.add_dependency "json"
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.7"
27
- spec.add_development_dependency "appraisal"
28
- spec.add_development_dependency "rake", "~> 12.0"
26
+ spec.add_development_dependency "bundler", "~> 2.0.2"
29
27
  spec.add_development_dependency "rspec"
30
28
  spec.add_development_dependency "capybara"
31
29
  end
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "devDependencies": {
3
3
  "babel-jest": "~23.4.0",
4
- "enzyme": "~3.3.0",
5
- "enzyme-adapter-react-15.4": "~1.0.6",
4
+ "enzyme": "~3.10.0",
5
+ "enzyme-adapter-react-16": "~1.14.0",
6
6
  "fetch-mock": "~5.13.1",
7
- "jest": "~23.4.1",
8
- "react-addons-test-utils": "~15.6.2"
7
+ "jest": "~23.4.1"
9
8
  }
10
9
  }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "devDependencies": {
3
- "babel-plugin-transform-runtime": "^6.23.0",
4
- "enzyme": "~2.9.1",
3
+ "enzyme": "~3.10.0",
4
+ "enzyme-adapter-react-16": "^1.14.0",
5
5
  "fetch-mock": "5",
6
6
  "fetch-ponyfill": "^6.0.2",
7
7
  "jasmine-core": "~2.4.1",
8
- "jasmine-enzyme": "~3.4.0",
8
+ "jasmine-enzyme": "~7.0.0",
9
9
  "karma": "~0.13.22",
10
10
  "karma-coverage": "0.5.5",
11
11
  "karma-jasmine": "~0.3.8",
@@ -13,8 +13,6 @@
13
13
  "karma-sourcemap-loader": "0.3.7",
14
14
  "karma-spec-reporter": "0.0.26",
15
15
  "karma-webpack": "2.0.1",
16
- "phantomjs-prebuilt": "~2.1.14",
17
- "react-addons-test-utils": "~15.6.2"
16
+ "phantomjs-prebuilt": "~2.1.14"
18
17
  }
19
18
  }
20
-
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "dependencies": {
3
- "babel-preset-react": "~6.24.1",
4
3
  "prop-types": "~15.6.0",
5
- "react": "~15.4.2",
6
- "react-dom": "~15.4.2",
4
+ "react": "~16.8.0",
5
+ "react-dom": "~16.8.0",
6
+ "react-router-dom": "5.0.0",
7
7
  "redbox-react": "1.6.0"
8
8
  },
9
9
  "devDependencies": {
10
+ "@babel/core": "^7.5.5",
11
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
12
+ "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
13
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
14
+ "@babel/plugin-transform-runtime": "^7.5.5",
15
+ "@babel/preset-env": "^7.5.5",
16
+ "@babel/preset-react": "^7.0.0",
17
+ "babel-loader": "^8.0.6",
10
18
  "webpack-cli": "^2.0.10",
11
19
  "webpack-dev-server": "^2.11.1"
12
20
  }
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- feature 'user generates rails app' do
3
+ feature 'user generates rails app with default settings' do
4
4
  def app_name
5
5
  'dummy_rails'
6
6
  end
@@ -9,7 +9,9 @@ feature 'user generates rails app' do
9
9
  join_paths(tmp_path, app_name)
10
10
  end
11
11
 
12
- let(:css_manifest_path) { join_paths(app_path, 'app/assets/stylesheets/application.css') }
12
+ let(:css_manifest_path) {
13
+ join_paths(app_path, 'app/assets/stylesheets/application.css')
14
+ }
13
15
 
14
16
  let(:gemfile_path) { join_paths(app_path, 'Gemfile')}
15
17
  let(:package_json_path) { join_paths(app_path, 'package.json')}
@@ -84,7 +86,7 @@ feature 'user generates rails app' do
84
86
  expect(File.read(gemfile_path)).to include('capybara')
85
87
  end
86
88
 
87
- it 'includes launch as a Gemfile dependency' do
89
+ it 'includes launchy as a Gemfile dependency' do
88
90
  expect(File.read(gemfile_path)).to include('launchy')
89
91
  end
90
92
 
@@ -188,8 +190,13 @@ feature 'user generates rails app' do
188
190
  expect(File.read(css_manifest_path)).to include('foundation_and_overrides')
189
191
  end
190
192
 
191
- it 'includes modernizr in the layout' do
192
- expect(File.read(File.join(app_path, 'app/views/layouts/application.html.erb'))).to include('modernizr')
193
+ it 'does not include foundation.html.erb' do
194
+ foundation_html = File.join(app_path, 'app/views/layouts/foundation.html.erb')
195
+ expect(FileTest.exists?(foundation_html)).to eq(false)
196
+ end
197
+
198
+ it 'does not include modernizr in the layout' do
199
+ expect(read_file('app/views/layouts/application.html.erb')).to_not include('modernizr')
193
200
  end
194
201
  end
195
202
 
@@ -200,7 +207,9 @@ feature 'user generates rails app' do
200
207
 
201
208
  it 'includes react in package.json' do
202
209
  in_package_json?(File.join(app_path, 'package.json')) do |json|
203
- expect(json["dependencies"]["react"]).to_not be_nil
210
+ react = json["dependencies"]["react"]
211
+ expect(major_version(react)).to be 16
212
+ expect(minor_version(react)).to be 8
204
213
  end
205
214
  end
206
215
 
@@ -212,152 +221,166 @@ feature 'user generates rails app' do
212
221
 
213
222
  it 'includes react-dom in package.json' do
214
223
  in_package_json?(File.join(app_path, 'package.json')) do |json|
215
- expect(json["dependencies"]["react-dom"]).to_not be_nil
224
+ react_dom = json["dependencies"]["react-dom"]
225
+ expect(major_version(react_dom)).to be 16
226
+ expect(minor_version(react_dom)).to be 8
227
+ end
228
+ end
229
+
230
+ it 'includes react-router-dom in package.json' do
231
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
232
+ expect(json["dependencies"]["react-router-dom"]).to_not be_nil
216
233
  end
217
234
  end
218
235
  end
219
236
 
220
- context 'karma' do
221
- it 'creates a karma.config' do
222
- karma_config = File.join(app_path, 'karma.conf.js')
223
- expect(FileTest.exists?(karma_config)).to eq(true)
237
+ context 'dotenv' do
238
+ it 'adds dotenv-rails to Gemfile' do
239
+ expect(File.read(gemfile_path)).to match(/gem(.*)dotenv-rails/)
224
240
  end
225
241
 
226
- it 'creates a testHelper.js' do
227
- test_helper = File.join(app_path, 'spec/javascript/testHelper.js')
228
- expect(FileTest.exists?(test_helper)).to eq(true)
242
+ it 'adds .env to gitignore' do
243
+ expect(read_file('.gitignore')).to include(".env\n")
229
244
  end
230
245
 
231
- it 'includes karma in package.json' do
232
- in_package_json?(File.join(app_path, 'package.json')) do |json|
233
- expect(json["devDependencies"]["karma"]).to_not be_nil
234
- end
246
+ it 'creates a .env file' do
247
+ expect(FileTest.exists?(File.join(app_path, '.env'))).to eq(true)
235
248
  end
236
249
 
237
- it 'includes jasmine in package.json' do
250
+ it 'creates a .env.example file' do
251
+ expect(FileTest.exists?(File.join(app_path, '.env.example'))).to eq(true)
252
+ end
253
+ end
254
+
255
+ context 'babel' do
256
+ it 'includes necessary babel packages in package.json as dev dependencies' do
238
257
  in_package_json?(File.join(app_path, 'package.json')) do |json|
239
- expect(json["devDependencies"]["jasmine-core"]).to_not be_nil
258
+ expect(json["devDependencies"]["@babel/core"]).to_not be_nil
259
+ expect(json["devDependencies"]["@babel/preset-env"]).to_not be_nil
260
+ expect(json["devDependencies"]["@babel/preset-react"]).to_not be_nil
261
+ expect(json["devDependencies"]["babel-loader"]).to_not be_nil
240
262
  end
241
263
  end
242
264
 
243
- it 'includes react-addons-test-utils' do
265
+ it 'sets necessary presets in .babelrc' do
266
+ babelrc = read_file('.babelrc')
267
+ expect(babelrc).to include("@babel/env")
268
+ expect(babelrc).to include("@babel/react")
269
+ end
270
+ end
271
+
272
+ context 'enzyme' do
273
+ it 'includes enzyme in package.json' do
244
274
  in_package_json?(File.join(app_path, 'package.json')) do |json|
245
- expect(json["devDependencies"]["react-addons-test-utils"]).to_not be_nil
275
+ enzyme = json["devDependencies"]["enzyme"]
276
+ expect(major_version(enzyme)).to be 3
277
+ expect(minor_version(enzyme)).to be 10
246
278
  end
247
279
  end
248
280
 
249
- it 'includes fetch-mock' do
281
+ it 'includes enzyme-adapter-react-16 in package.json' do
250
282
  in_package_json?(File.join(app_path, 'package.json')) do |json|
251
- expect(json["devDependencies"]["fetch-mock"]).to_not be_nil
283
+ adapter = json["devDependencies"]["enzyme-adapter-react-16"]
284
+ expect(major_version(adapter)).to be 1
285
+ expect(minor_version(adapter)).to be 14
252
286
  end
253
-
254
287
  end
255
288
 
256
- it 'adds coverage/* to gitignore' do
257
- expect(File.read(File.join(app_path, '.gitignore'))).to include("coverage/*\n")
289
+ it 'adds a spec/javascript/support/enzyme.js file' do
290
+ support_file = File.join(app_path, 'spec/javascript/support/enzyme.js')
291
+ expect(FileTest.exists?(support_file)).to eq(true)
258
292
  end
259
293
 
294
+ it 'adds spec/javascript/support/enzyme.js to setup' do
295
+ in_package_json?(package_json_path) do |json|
296
+ expect(json["jest"]).to_not be_nil
297
+ expect(json["jest"]["setupFiles"]).to include('./spec/javascript/support/enzyme.js')
298
+ end
299
+ end
260
300
  end
261
301
 
262
- context 'dotenv' do
263
- it 'adds dotenv-rails to Gemfile' do
264
- expect(File.read(gemfile_path)).to match(/gem(.*)dotenv-rails/)
302
+ context 'jest' do
303
+ it 'includes fetch-mock' do
304
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
305
+ expect(json["devDependencies"]["fetch-mock"]).to_not be_nil
306
+ end
265
307
  end
266
308
 
267
- it 'adds .env to gitignore' do
268
- expect(File.read(File.join(app_path, '.gitignore'))).to include(".env\n")
309
+ scenario 'adds jest as a dependency' do
310
+ in_package_json?(package_json_path) do |json|
311
+ expect(json["devDependencies"]["jest"]).to_not be_nil
312
+ end
269
313
  end
270
314
 
271
- it 'creates a .env file' do
272
- expect(FileTest.exists?(File.join(app_path, '.env'))).to eq(true)
315
+ scenario 'adds enzyme as a dependency' do
316
+ in_package_json?(package_json_path) do |json|
317
+ expect(json["devDependencies"]["enzyme"]).to_not be_nil
318
+ end
273
319
  end
274
320
 
275
- it 'creates a .env.example file' do
276
- expect(FileTest.exists?(File.join(app_path, '.env.example'))).to eq(true)
321
+ scenario 'adds fetch-mock as a dependency' do
322
+ in_package_json?(package_json_path) do |json|
323
+ expect(json["devDependencies"]["fetch-mock"]).to_not be_nil
324
+ end
277
325
  end
278
- end
279
- end
280
326
 
281
- feature 'jest' do
282
- def app_name
283
- 'dummy_rails'
284
- end
285
-
286
- def app_path
287
- join_paths(tmp_path, app_name)
288
- end
289
-
290
- before(:all) do
291
- make_it_so!("rails #{app_name} --jest")
292
- end
293
-
294
- let(:package_json_path) { File.join(app_path, 'package.json') }
295
-
296
-
297
- scenario 'adds jest as a dependency' do
298
- in_package_json?(package_json_path) do |json|
299
- expect(json["devDependencies"]["jest"]).to_not be_nil
327
+ scenario 'adds jest as the test script in package.json' do
328
+ in_package_json?(package_json_path) do |json|
329
+ expect(json["scripts"]["test"]).to include("jest")
330
+ end
300
331
  end
301
- end
302
332
 
303
- scenario 'adds enzyme as a dependency' do
304
- in_package_json?(package_json_path) do |json|
305
- expect(json["devDependencies"]["enzyme"]).to_not be_nil
333
+ scenario 'adds spec/javascripts to roots' do
334
+ in_package_json?(package_json_path) do |json|
335
+ expect(json["jest"]).to_not be_nil
336
+ expect(json["jest"]["roots"]).to include("spec/javascript")
337
+ end
306
338
  end
307
- end
308
339
 
309
- scenario 'adds fetch-mock as a dependency' do
310
- in_package_json?(package_json_path) do |json|
311
- expect(json["devDependencies"]["fetch-mock"]).to_not be_nil
340
+ scenario 'adds node_modules to modules directory' do
341
+ in_package_json?(package_json_path) do |json|
342
+ expect(json["jest"]).to_not be_nil
343
+ expect(json["jest"]["moduleDirectories"]).to_not be_nil
344
+ expect(json["jest"]["moduleDirectories"]).to include("node_modules")
345
+ end
312
346
  end
313
- end
314
347
 
315
- scenario 'adds jest as the test script in package.json' do
316
- in_package_json?(package_json_path) do |json|
317
- expect(json["scripts"]["test"]).to include("jest")
348
+ scenario 'adds app/javascript to modules directory' do
349
+ in_package_json?(package_json_path) do |json|
350
+ expect(json["jest"]).to_not be_nil
351
+ expect(json["jest"]["moduleDirectories"]).to_not be_nil
352
+ expect(json["jest"]["moduleDirectories"]).to include("app/javascript")
353
+ end
318
354
  end
319
- end
320
355
 
321
- scenario 'adds spec/javascripts to roots' do
322
- in_package_json?(package_json_path) do |json|
323
- expect(json["jest"]).to_not be_nil
324
- expect(json["jest"]["roots"]).to include("spec/javascript")
356
+ scenario 'adds testURL to jest configuration' do
357
+ in_package_json?(package_json_path) do |json|
358
+ expect(json["jest"]).to_not be_nil
359
+ expect(json["jest"]["testURL"]).to_not be_nil
360
+ expect(json["jest"]["testURL"]).to eq("http://localhost/")
361
+ end
325
362
  end
326
363
  end
327
364
 
328
- scenario 'adds node_modules to modules directory' do
329
- in_package_json?(package_json_path) do |json|
330
- expect(json["jest"]).to_not be_nil
331
- expect(json["jest"]["moduleDirectories"]).to_not be_nil
332
- expect(json["jest"]["moduleDirectories"]).to include("node_modules")
333
- end
365
+ it 'does not create a karma.config' do
366
+ karma_config = File.join(app_path, 'karma.conf.js')
367
+ expect(FileTest.exists?(karma_config)).to eq(false)
334
368
  end
335
369
 
336
- scenario 'adds app/javascript to modules directory' do
337
- in_package_json?(package_json_path) do |json|
338
- expect(json["jest"]).to_not be_nil
339
- expect(json["jest"]["moduleDirectories"]).to_not be_nil
340
- expect(json["jest"]["moduleDirectories"]).to include("app/javascript")
341
- end
370
+ it 'does not create a testHelper.js' do
371
+ test_helper = File.join(app_path, 'spec/javascript/testHelper.js')
372
+ expect(FileTest.exists?(test_helper)).to eq(false)
342
373
  end
343
374
 
344
- scenario 'adds testURL to jest configuration' do
345
- in_package_json?(package_json_path) do |json|
346
- expect(json["jest"]).to_not be_nil
347
- expect(json["jest"]["testURL"]).to_not be_nil
348
- expect(json["jest"]["testURL"]).to eq("http://localhost/")
375
+ it 'does not include karma in package.json' do
376
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
377
+ expect(json["devDependencies"]["karma"]).to be_nil
349
378
  end
350
379
  end
351
380
 
352
- scenario 'adds a spec/javascript/support/enzyme.js file' do
353
- support_file = File.join(app_path, 'spec/javascript/support/enzyme.js')
354
- expect(FileTest.exists?(support_file)).to eq(true)
355
- end
356
-
357
- scenario 'adds spec/javascript/support/enzyme.js to setup' do
358
- in_package_json?(package_json_path) do |json|
359
- expect(json["jest"]).to_not be_nil
360
- expect(json["jest"]["setupFiles"]).to include('./spec/javascript/support/enzyme.js')
381
+ it 'does not include jasmine in package.json' do
382
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
383
+ expect(json["devDependencies"]["jasmine-core"]).to be_nil
361
384
  end
362
385
  end
363
386
  end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ feature "user generates rails app with karma/jasmine" do
4
+ def app_name
5
+ 'dummy_rails'
6
+ end
7
+
8
+ def app_path
9
+ join_paths(tmp_path, app_name)
10
+ end
11
+
12
+ before(:all) do
13
+ make_it_so!("rails #{app_name} --js-test-lib karma")
14
+ end
15
+
16
+ let(:package_json_path) { File.join(app_path, 'package.json') }
17
+
18
+ it 'creates a karma.config' do
19
+ karma_config = File.join(app_path, 'karma.conf.js')
20
+ expect(FileTest.exists?(karma_config)).to eq(true)
21
+ end
22
+
23
+ it 'creates a testHelper.js' do
24
+ test_helper = File.join(app_path, 'spec/javascript/testHelper.js')
25
+ expect(FileTest.exists?(test_helper)).to eq(true)
26
+ end
27
+
28
+ it 'includes karma in package.json' do
29
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
30
+ expect(json["devDependencies"]["karma"]).to_not be_nil
31
+ end
32
+ end
33
+
34
+ it 'includes jasmine in package.json' do
35
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
36
+ expect(json["devDependencies"]["jasmine-core"]).to_not be_nil
37
+ end
38
+ end
39
+
40
+ it 'adds coverage/* to gitignore' do
41
+ expect(read_file('.gitignore')).to include("coverage/*\n")
42
+ end
43
+
44
+ it 'configures enzyme with adapter in testHelper' do
45
+ testHelper = read_file('spec/javascript/testHelper.js')
46
+ expect(testHelper).to include("Enzyme.configure({ adapter: new EnzymeAdapter() })")
47
+ end
48
+
49
+ it 'karma.conf.js uses @babel/polyfill' do
50
+ expect(read_file('karma.conf.js')).to include("node_modules/@babel/polyfill/dist/polyfill.js")
51
+ end
52
+
53
+ it 'does not add jest as the test script in package.json' do
54
+ in_package_json?(package_json_path) do |json|
55
+ expect(json["scripts"]["test"]).to_not include("jest")
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ feature "user generates rails app without js test framework" do
4
+ def app_name
5
+ 'dummy_rails'
6
+ end
7
+
8
+ def app_path
9
+ join_paths(tmp_path, app_name)
10
+ end
11
+
12
+ before(:all) do
13
+ make_it_so!("rails #{app_name} --js-test-lib false")
14
+ end
15
+
16
+ let(:package_json_path) { File.join(app_path, 'package.json') }
17
+
18
+ it 'does not create a karma.config' do
19
+ karma_config = File.join(app_path, 'karma.conf.js')
20
+ expect(FileTest.exists?(karma_config)).to eq(false)
21
+ end
22
+
23
+ it 'does not create a testHelper.js' do
24
+ test_helper = File.join(app_path, 'spec/javascript/testHelper.js')
25
+ expect(FileTest.exists?(test_helper)).to eq(false)
26
+ end
27
+
28
+ it 'does not create an enzyme config file' do
29
+ test_helper = File.join(app_path, 'spec/javascript/support/enzyme.js')
30
+ expect(FileTest.exists?(test_helper)).to eq(false)
31
+ end
32
+
33
+ it 'does not include karma or jest in package.json' do
34
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
35
+ expect(json["devDependencies"]["karma"]).to be_nil
36
+ expect(json["devDependencies"]["jest"]).to be_nil
37
+ end
38
+ end
39
+
40
+ it 'does not include jasmine in package.json' do
41
+ in_package_json?(File.join(app_path, 'package.json')) do |json|
42
+ expect(json["devDependencies"]["jasmine-core"]).to be_nil
43
+ end
44
+ end
45
+
46
+ it 'does not add a test script in package.json' do
47
+ in_package_json?(package_json_path) do |json|
48
+ expect(json["scripts"]["test"]).to be_nil
49
+ end
50
+ end
51
+ end
@@ -50,6 +50,29 @@ module MakeItSoSpecHelpers
50
50
  json = JSON.parse(contents)
51
51
  yield(json)
52
52
  end
53
+
54
+ def read_file(file_path)
55
+ File.read(File.join(app_path, file_path))
56
+ end
57
+
58
+ def major_version(version_string)
59
+ version_array(version_string)[0]
60
+ end
61
+
62
+ def minor_version(version_string)
63
+ version_array(version_string)[1]
64
+ end
65
+
66
+ def patch_version(version_string)
67
+ version_array(version_string)[2]
68
+ end
69
+
70
+ def version_array(version_string)
71
+ version_string.delete!("^")
72
+ version_string.delete!("~")
73
+ version_array = version_string.split(".")
74
+ version_array.map{ |string| string.to_i }
75
+ end
53
76
  end
54
77
 
55
78
  RSpec.configure do |config|
@@ -0,0 +1,33 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/env",
5
+ {
6
+ "modules": false,
7
+ "targets": {
8
+ "browsers": "> 1%"
9
+ },
10
+ "forceAllTransforms": true
11
+ }
12
+ ],
13
+ "@babel/react"
14
+ ],
15
+ "plugins": [
16
+ "@babel/syntax-dynamic-import",
17
+ "@babel/proposal-object-rest-spread",
18
+ [
19
+ "@babel/proposal-class-properties",
20
+ {
21
+ "spec": true
22
+ }
23
+ ]
24
+ ],
25
+ "env": {
26
+ "test": {
27
+ "presets": [
28
+ "@babel/env",
29
+ "@babel/react"
30
+ ]
31
+ }
32
+ }
33
+ }
@@ -4,4 +4,4 @@ export const App = (props) => {
4
4
  return (<h1>Make It So React</h1>)
5
5
  }
6
6
 
7
- export default App
7
+ export default App
@@ -4,20 +4,13 @@
4
4
  <title><%= camelized %></title>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <%%= stylesheet_link_tag 'application', media: 'all' %>
7
- <% if options.foundation? %>
8
- <%%= javascript_include_tag "vendor/modernizr" %>
9
- <% end %>
10
7
  <%%= csrf_meta_tags %>
11
8
  </head>
12
9
  <body>
13
10
  <%- if options.devise? -%>
14
11
  <% if options.foundation? %>
15
12
  <nav class="top-bar">
16
- <ul class="title-area">
17
- <li class="name">
18
- <h1><a href="/"><%= camelized %></a></h1>
19
- </li>
20
- </ul>
13
+ <h1><a href="/"><%= camelized %></a></h1>
21
14
 
22
15
  <section class="top-bar-section">
23
16
  <ul class="right">
@@ -12,7 +12,7 @@ module.exports = function(config) {
12
12
  // files that Karma will server to the browser
13
13
  files: [
14
14
  // use Babel polyfill to emulate a full ES6 environment in PhantomJS
15
- 'node_modules/babel-polyfill/dist/polyfill.js',
15
+ 'node_modules/@babel/polyfill/dist/polyfill.js',
16
16
  // entry file for Webpack
17
17
  'spec/javascript/testHelper.js'
18
18
  ],
@@ -1,6 +1,4 @@
1
1
  const Enzyme = require('enzyme');
2
-
3
2
  const EnzymeAdapter = require('enzyme-adapter-react-15.4');
4
3
 
5
4
  Enzyme.configure({ adapter: new EnzymeAdapter() });
6
-
@@ -1,3 +1,7 @@
1
+ const Enzyme = require('enzyme');
2
+ const EnzymeAdapter = require('enzyme-adapter-react-16');
3
+ Enzyme.configure({ adapter: new EnzymeAdapter() });
4
+
1
5
  import { shallow, mount } from 'enzyme';
2
6
  import jasmineEnzyme from 'jasmine-enzyme';
3
7
  import React from 'react';
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: make_it_so
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Pickett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-05 00:00:00.000000000 Z
11
+ date: 2019-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -72,42 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.7'
75
+ version: 2.0.2
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: '1.7'
83
- - !ruby/object:Gem::Dependency
84
- name: appraisal
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '12.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '12.0'
82
+ version: 2.0.2
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: rspec
113
85
  requirement: !ruby/object:Gem::Requirement
@@ -146,18 +118,11 @@ extra_rdoc_files: []
146
118
  files:
147
119
  - ".gitignore"
148
120
  - ".rspec"
149
- - Appraisals
150
121
  - Gemfile
151
122
  - LICENSE.txt
152
123
  - README.md
153
124
  - Rakefile
154
125
  - bin/make_it_so
155
- - gemfiles/rails_4_0.gemfile
156
- - gemfiles/rails_4_0.gemfile.lock
157
- - gemfiles/rails_4_1.gemfile
158
- - gemfiles/rails_4_1.gemfile.lock
159
- - gemfiles/rails_4_2.gemfile
160
- - gemfiles/rails_4_2.gemfile.lock
161
126
  - lib/generators/gosu_app_generator.rb
162
127
  - lib/generators/rails_app_generator.rb
163
128
  - lib/generators/sinatra_app_generator.rb
@@ -169,11 +134,13 @@ files:
169
134
  - make_it_so.gemspec
170
135
  - snippets/rails/application_generator.rb
171
136
  - snippets/rails/js_jest_testing_deps.json
172
- - snippets/rails/js_testing_deps.json
137
+ - snippets/rails/js_karma_jasmine_testing_deps.json
173
138
  - snippets/rails/react_dependencies.json
174
139
  - snippets/rails/user_factory.rb
140
+ - spec/features/rails/user_generates_rails_spec.rb
141
+ - spec/features/rails/user_generates_rails_with_karma_spec.rb
142
+ - spec/features/rails/user_generates_rails_without_js_test_lib_spec.rb
175
143
  - spec/features/user_generates_gosu_spec.rb
176
- - spec/features/user_generates_rails_spec.rb
177
144
  - spec/features/user_generates_sinatra_spec.rb
178
145
  - spec/spec_helper.rb
179
146
  - spec/support/make_it_so_spec_helpers.rb
@@ -185,6 +152,7 @@ files:
185
152
  - templates/gosu/lib/bounding_box.rb
186
153
  - templates/gosu/lib/keys.rb
187
154
  - templates/gosu/spec/spec_helper.rb
155
+ - templates/rails/.babelrc
188
156
  - templates/rails/.env
189
157
  - templates/rails/.env.example
190
158
  - templates/rails/.gitkeep
@@ -236,14 +204,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
204
  - !ruby/object:Gem::Version
237
205
  version: '0'
238
206
  requirements: []
239
- rubyforge_project:
240
- rubygems_version: 2.6.13
207
+ rubygems_version: 3.0.6
241
208
  signing_key:
242
209
  specification_version: 4
243
210
  summary: An application generator for all things ruby
244
211
  test_files:
212
+ - spec/features/rails/user_generates_rails_spec.rb
213
+ - spec/features/rails/user_generates_rails_with_karma_spec.rb
214
+ - spec/features/rails/user_generates_rails_without_js_test_lib_spec.rb
245
215
  - spec/features/user_generates_gosu_spec.rb
246
- - spec/features/user_generates_rails_spec.rb
247
216
  - spec/features/user_generates_sinatra_spec.rb
248
217
  - spec/spec_helper.rb
249
218
  - spec/support/make_it_so_spec_helpers.rb
data/Appraisals DELETED
@@ -1,4 +0,0 @@
1
- appraise "rails-4-2" do
2
- gem "railties", "~> 4.2.0"
3
- end
4
-
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "railties", "~> 4.0.12"
6
-
7
- group :development do
8
- gem "pry"
9
- end
10
-
11
- gemspec :path => "../"
@@ -1,88 +0,0 @@
1
- PATH
2
- remote: ../
3
- specs:
4
- make_it_so (0.0.2)
5
- railties
6
- thor
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionpack (4.0.12)
12
- activesupport (= 4.0.12)
13
- builder (~> 3.1.0)
14
- erubis (~> 2.7.0)
15
- rack (~> 1.5.2)
16
- rack-test (~> 0.6.2)
17
- activesupport (4.0.12)
18
- i18n (~> 0.6, >= 0.6.9)
19
- minitest (~> 4.2)
20
- multi_json (~> 1.3)
21
- thread_safe (~> 0.1)
22
- tzinfo (~> 0.3.37)
23
- appraisal (1.0.2)
24
- bundler
25
- rake
26
- thor (>= 0.14.0)
27
- builder (3.1.4)
28
- capybara (2.4.4)
29
- mime-types (>= 1.16)
30
- nokogiri (>= 1.3.3)
31
- rack (>= 1.0.0)
32
- rack-test (>= 0.5.4)
33
- xpath (~> 2.0)
34
- coderay (1.1.0)
35
- diff-lcs (1.2.5)
36
- erubis (2.7.0)
37
- i18n (0.7.0)
38
- method_source (0.8.2)
39
- mime-types (2.4.3)
40
- mini_portile (0.6.1)
41
- minitest (4.7.5)
42
- multi_json (1.10.1)
43
- nokogiri (1.6.5)
44
- mini_portile (~> 0.6.0)
45
- pry (0.10.1)
46
- coderay (~> 1.1.0)
47
- method_source (~> 0.8.1)
48
- slop (~> 3.4)
49
- rack (1.5.2)
50
- rack-test (0.6.2)
51
- rack (>= 1.0)
52
- railties (4.0.12)
53
- actionpack (= 4.0.12)
54
- activesupport (= 4.0.12)
55
- rake (>= 0.8.7)
56
- thor (>= 0.18.1, < 2.0)
57
- rake (10.4.2)
58
- rspec (3.1.0)
59
- rspec-core (~> 3.1.0)
60
- rspec-expectations (~> 3.1.0)
61
- rspec-mocks (~> 3.1.0)
62
- rspec-core (3.1.7)
63
- rspec-support (~> 3.1.0)
64
- rspec-expectations (3.1.2)
65
- diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.1.0)
67
- rspec-mocks (3.1.3)
68
- rspec-support (~> 3.1.0)
69
- rspec-support (3.1.2)
70
- slop (3.6.0)
71
- thor (0.19.1)
72
- thread_safe (0.3.4)
73
- tzinfo (0.3.42)
74
- xpath (2.0.0)
75
- nokogiri (~> 1.3)
76
-
77
- PLATFORMS
78
- ruby
79
-
80
- DEPENDENCIES
81
- appraisal
82
- bundler (~> 1.7)
83
- capybara
84
- make_it_so!
85
- pry
86
- railties (~> 4.0.12)
87
- rake (~> 10.0)
88
- rspec
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "railties", "~> 4.1.8"
6
-
7
- group :development do
8
- gem "pry"
9
- end
10
-
11
- gemspec :path => "../"
@@ -1,92 +0,0 @@
1
- PATH
2
- remote: ../
3
- specs:
4
- make_it_so (0.0.2)
5
- railties
6
- thor
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionpack (4.1.8)
12
- actionview (= 4.1.8)
13
- activesupport (= 4.1.8)
14
- rack (~> 1.5.2)
15
- rack-test (~> 0.6.2)
16
- actionview (4.1.8)
17
- activesupport (= 4.1.8)
18
- builder (~> 3.1)
19
- erubis (~> 2.7.0)
20
- activesupport (4.1.8)
21
- i18n (~> 0.6, >= 0.6.9)
22
- json (~> 1.7, >= 1.7.7)
23
- minitest (~> 5.1)
24
- thread_safe (~> 0.1)
25
- tzinfo (~> 1.1)
26
- appraisal (1.0.2)
27
- bundler
28
- rake
29
- thor (>= 0.14.0)
30
- builder (3.2.2)
31
- capybara (2.4.4)
32
- mime-types (>= 1.16)
33
- nokogiri (>= 1.3.3)
34
- rack (>= 1.0.0)
35
- rack-test (>= 0.5.4)
36
- xpath (~> 2.0)
37
- coderay (1.1.0)
38
- diff-lcs (1.2.5)
39
- erubis (2.7.0)
40
- i18n (0.7.0)
41
- json (1.8.1)
42
- method_source (0.8.2)
43
- mime-types (2.4.3)
44
- mini_portile (0.6.1)
45
- minitest (5.5.0)
46
- nokogiri (1.6.5)
47
- mini_portile (~> 0.6.0)
48
- pry (0.10.1)
49
- coderay (~> 1.1.0)
50
- method_source (~> 0.8.1)
51
- slop (~> 3.4)
52
- rack (1.5.2)
53
- rack-test (0.6.2)
54
- rack (>= 1.0)
55
- railties (4.1.8)
56
- actionpack (= 4.1.8)
57
- activesupport (= 4.1.8)
58
- rake (>= 0.8.7)
59
- thor (>= 0.18.1, < 2.0)
60
- rake (10.4.2)
61
- rspec (3.1.0)
62
- rspec-core (~> 3.1.0)
63
- rspec-expectations (~> 3.1.0)
64
- rspec-mocks (~> 3.1.0)
65
- rspec-core (3.1.7)
66
- rspec-support (~> 3.1.0)
67
- rspec-expectations (3.1.2)
68
- diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.1.0)
70
- rspec-mocks (3.1.3)
71
- rspec-support (~> 3.1.0)
72
- rspec-support (3.1.2)
73
- slop (3.6.0)
74
- thor (0.19.1)
75
- thread_safe (0.3.4)
76
- tzinfo (1.2.2)
77
- thread_safe (~> 0.1)
78
- xpath (2.0.0)
79
- nokogiri (~> 1.3)
80
-
81
- PLATFORMS
82
- ruby
83
-
84
- DEPENDENCIES
85
- appraisal
86
- bundler (~> 1.7)
87
- capybara
88
- make_it_so!
89
- pry
90
- railties (~> 4.1.8)
91
- rake (~> 10.0)
92
- rspec
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "railties", "~> 4.2.0"
6
-
7
- group :development do
8
- gem "pry"
9
- end
10
-
11
- gemspec :path => "../"
@@ -1,106 +0,0 @@
1
- PATH
2
- remote: ../
3
- specs:
4
- make_it_so (0.0.2)
5
- railties
6
- thor
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionpack (4.2.0)
12
- actionview (= 4.2.0)
13
- activesupport (= 4.2.0)
14
- rack (~> 1.6.0)
15
- rack-test (~> 0.6.2)
16
- rails-dom-testing (~> 1.0, >= 1.0.5)
17
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
18
- actionview (4.2.0)
19
- activesupport (= 4.2.0)
20
- builder (~> 3.1)
21
- erubis (~> 2.7.0)
22
- rails-dom-testing (~> 1.0, >= 1.0.5)
23
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
24
- activesupport (4.2.0)
25
- i18n (~> 0.7)
26
- json (~> 1.7, >= 1.7.7)
27
- minitest (~> 5.1)
28
- thread_safe (~> 0.3, >= 0.3.4)
29
- tzinfo (~> 1.1)
30
- appraisal (1.0.2)
31
- bundler
32
- rake
33
- thor (>= 0.14.0)
34
- builder (3.2.2)
35
- capybara (2.4.4)
36
- mime-types (>= 1.16)
37
- nokogiri (>= 1.3.3)
38
- rack (>= 1.0.0)
39
- rack-test (>= 0.5.4)
40
- xpath (~> 2.0)
41
- coderay (1.1.0)
42
- diff-lcs (1.2.5)
43
- erubis (2.7.0)
44
- i18n (0.7.0)
45
- json (1.8.1)
46
- loofah (2.0.1)
47
- nokogiri (>= 1.5.9)
48
- method_source (0.8.2)
49
- mime-types (2.4.3)
50
- mini_portile (0.6.1)
51
- minitest (5.5.0)
52
- nokogiri (1.6.5)
53
- mini_portile (~> 0.6.0)
54
- pry (0.10.1)
55
- coderay (~> 1.1.0)
56
- method_source (~> 0.8.1)
57
- slop (~> 3.4)
58
- rack (1.6.0)
59
- rack-test (0.6.2)
60
- rack (>= 1.0)
61
- rails-deprecated_sanitizer (1.0.3)
62
- activesupport (>= 4.2.0.alpha)
63
- rails-dom-testing (1.0.5)
64
- activesupport (>= 4.2.0.beta, < 5.0)
65
- nokogiri (~> 1.6.0)
66
- rails-deprecated_sanitizer (>= 1.0.1)
67
- rails-html-sanitizer (1.0.1)
68
- loofah (~> 2.0)
69
- railties (4.2.0)
70
- actionpack (= 4.2.0)
71
- activesupport (= 4.2.0)
72
- rake (>= 0.8.7)
73
- thor (>= 0.18.1, < 2.0)
74
- rake (10.4.2)
75
- rspec (3.1.0)
76
- rspec-core (~> 3.1.0)
77
- rspec-expectations (~> 3.1.0)
78
- rspec-mocks (~> 3.1.0)
79
- rspec-core (3.1.7)
80
- rspec-support (~> 3.1.0)
81
- rspec-expectations (3.1.2)
82
- diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.1.0)
84
- rspec-mocks (3.1.3)
85
- rspec-support (~> 3.1.0)
86
- rspec-support (3.1.2)
87
- slop (3.6.0)
88
- thor (0.19.1)
89
- thread_safe (0.3.4)
90
- tzinfo (1.2.2)
91
- thread_safe (~> 0.1)
92
- xpath (2.0.0)
93
- nokogiri (~> 1.3)
94
-
95
- PLATFORMS
96
- ruby
97
-
98
- DEPENDENCIES
99
- appraisal
100
- bundler (~> 1.7)
101
- capybara
102
- make_it_so!
103
- pry
104
- railties (~> 4.2.0)
105
- rake (~> 10.0)
106
- rspec