ammeter 1.1.3 → 1.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b09616152a6a841841c86b88596daa437725df9
4
- data.tar.gz: 7aee1b867d17fa150330198d7f5c8c73c9812237
3
+ metadata.gz: a001157dcbfae6b406995d4e01a27b89ce22ae92
4
+ data.tar.gz: 7f43153034ae84e0698a73c609782714224d64dc
5
5
  SHA512:
6
- metadata.gz: 4f7affdbcb8d11a54dbb7eefd2d8694b4f6a519bc1f42a22bb49d2ea13381360c519dbc576eace67f6a9ec6bafd2704697a146660961199d19a65049b7da610f
7
- data.tar.gz: 76fbf530694d7c1727f6ea40080799bfd50f8363cd4ddc86d1d1ba8e13490ef3ff93b8672efaeda239005260a5481d0961e7d84b64eb006c4a2234d27a4a3c0e
6
+ metadata.gz: 44b2ea56e21b1650b60a598d0ac45ab8e07c0e36c8500a93a067cc2ed42dacc8efc853996ceea1d4362b4f50de75454ab440833689c5ede74881a7c31aef1673
7
+ data.tar.gz: d54a0ab64428f7f462f5fb22c70ca2af3e0498b95e94c86b26babc6d7c5741fa8d915b820ae4dd047443432c03713c61e1e38093e0d79c044b14962c0baf24c1
@@ -2,20 +2,16 @@ language: ruby
2
2
  sudo: false
3
3
 
4
4
  rvm:
5
+ - 2.3.0
5
6
  - 2.2
6
7
  - 2.1.2
7
8
  - 2.0.0
8
- - 1.9.3
9
- - 1.8.7
10
9
  - ruby-head
11
- - jruby-9.0.0.0.pre1
12
- - jruby-1.7.9-d19
10
+ - jruby-9.1.2.0
13
11
 
14
12
  env:
15
13
  - RSPEC_VERSION=master
16
- - RSPEC_VERSION='~> 3.0.0'
17
- - RSPEC_VERSION='~> 2.99.0'
18
- - RSPEC_VERSION='~> 2.14.0'
14
+ - RSPEC_VERSION='~> 3.0'
19
15
 
20
16
  bundler_args: "--retry=3 --jobs=3"
21
17
 
@@ -23,8 +19,5 @@ script: "bundle exec rake ci --trace"
23
19
 
24
20
  matrix:
25
21
  allow_failures:
26
- - rvm: 2.2
27
22
  - rvm: ruby-head
28
- - rvm: jruby-9.0.0.0.pre1
29
- - rvm: jruby-1.7.9-d19
30
-
23
+ - rvm: jruby-9.1.2.0
data/Gemfile CHANGED
@@ -27,7 +27,11 @@ if rspec_major_version == '2' || RUBY_VERSION.to_f < 1.9
27
27
  gem 'haml-rails', '~> 0.4'
28
28
  gem 'execjs', '~> 2.0.0'
29
29
  elsif rspec_major_version == '3'
30
- gem 'rails', '>= 4.0'
30
+ if RUBY_VERSION < '2.2.2'
31
+ gem 'rails', '< 5.0' # rails 5 is ruby >= 2.2.2
32
+ else
33
+ gem 'rails', '>= 4.0'
34
+ end
31
35
  gem 'uglifier', '>= 1.3'
32
36
  gem 'rake', '>= 0.10'
33
37
  gem 'coffee-rails', '>= 4.0'
@@ -39,6 +43,7 @@ else
39
43
  end
40
44
 
41
45
  gem "i18n", '< 0.7.0' if RUBY_VERSION < '1.9.3'
46
+ gem "rack", '<= 1.6.4' if RUBY_VERSION < '2.2.2'
42
47
 
43
48
  # Specify your gem's dependencies in rspec-rails-generator-specs.gemspec
44
49
  gemspec
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ def create_gem(gem_name)
27
27
  template_folder = "features/templates/#{gem_name}"
28
28
 
29
29
  Dir.chdir("./tmp") do
30
- sh "bundle gem #{gem_name}"
30
+ sh "yes | bundle gem -t rspec #{gem_name}"
31
31
  end
32
32
  sh "cp '#{template_folder}/Gemfile' tmp/#{gem_name}"
33
33
  sh "cp '#{template_folder}/#{gem_name}.gemspec' tmp/#{gem_name}"
@@ -74,7 +74,7 @@ Feature: Gems can contain generators
74
74
  describe 'app/models/post.rb' do
75
75
  subject { file('app/models/post.rb') }
76
76
  it { expect(subject).to exist }
77
- it { expect(subject).to contain 'class Post < ActiveRecord::Base' }
77
+ it { expect(subject).to contain 'class Post < ' }
78
78
  end
79
79
  end
80
80
  """
@@ -0,0 +1,56 @@
1
+ @example_app
2
+ Feature: generator with shell prompts spec
3
+
4
+ Generator specs live in spec/generators. In order to access
5
+ the generator's methods you can call them on the "generator" object.
6
+
7
+ Background: A simple generator
8
+ Given a file named "lib/generators/awesome/lamest_generator.rb" with:
9
+ """
10
+ class LamestGenerator < Rails::Generators::NamedBase
11
+ source_root File.expand_path('../templates', __FILE__)
12
+ class_option :super, :type => :boolean, :default => false
13
+
14
+ def create_lamest
15
+ @lame = false
16
+ @awesome = false
17
+ @user_name = ask("What is your name?")
18
+ if yes?("Are you the lamest?")
19
+ @lame = true
20
+ end
21
+ if yes?("Are you awesome?")
22
+ @awesome = true
23
+ end
24
+ template 'lamest.html.erb', File.join('public', name, "#{"super_" if options[:super]}lamest.html")
25
+ end
26
+ end
27
+ """
28
+ And a file named "lib/generators/awesome/templates/lamest.html.erb" with:
29
+ """
30
+ <%= @user_name %> <%= "is the lamest" if @lame %> and <%= "is not awesome!" if @awesome == false %>
31
+ """
32
+
33
+ Scenario: A spec that runs the entire generator
34
+ Given a file named "spec/generators/lamest_generator_spec.rb" with:
35
+ """
36
+ require "rails_helper"
37
+ require 'generators/awesome/lamest_generator'
38
+
39
+ describe LamestGenerator do
40
+ describe 'invoke' do
41
+ before do
42
+ gen = generator %w(my_dir)
43
+ set_shell_prompt_responses(gen, { :ask => "Thomas", :yes? => [true, false] })
44
+ run_generator
45
+ end
46
+ describe 'public/my_dir/lamest.html' do
47
+ subject { file('public/my_dir/lamest.html') }
48
+ it { expect(subject).to exist }
49
+ it { expect(subject).to contain 'Thomas is the lamest and is not awesome!' }
50
+ it { expect(subject).to_not contain 'This text is not in the file' }
51
+ end
52
+ end
53
+ end
54
+ """
55
+ When I run `rake spec`
56
+ Then the output should contain "3 examples, 0 failures"
@@ -41,7 +41,7 @@ Feature: generator spec
41
41
  describe 'app/models/post.rb' do
42
42
  subject { file('app/models/post.rb') }
43
43
  it { expect(subject).to exist }
44
- it { expect(subject).to contain 'class Post < ActiveRecord::Base' }
44
+ it { expect(subject).to contain 'class Post < ' }
45
45
  end
46
46
  end
47
47
  """
@@ -1,5 +1,8 @@
1
1
  require 'bundler/setup'
2
2
  require 'rails/all'
3
+
4
+ ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => ":memory:"
5
+
3
6
  begin
4
7
  # This prevents 'uninitialized constant Jquery::Rails::Railtie::PROTOTYPE_JS (NameError)'
5
8
  require 'jquery/rails'
@@ -1,5 +1,6 @@
1
1
  require 'bundler/setup'
2
- require 'rails'
2
+ require 'rails/all'
3
3
  require 'ammeter/init'
4
4
 
5
5
  Bundler.require
6
+ ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => ":memory:"
@@ -1,5 +1,6 @@
1
1
  require 'rspec/core'
2
2
  require 'ammeter/rspec/generator/example/generator_example_group'
3
+ require 'ammeter/rspec/generator/example/generator_example_helpers'
3
4
 
4
5
  RSpec::configure do |c|
5
6
  def c.escaped_path(*parts)
@@ -8,6 +9,8 @@ RSpec::configure do |c|
8
9
 
9
10
  generator_path_regex = c.escaped_path(%w[spec generators])
10
11
  if RSpec::Core::Version::STRING >= '3'
12
+ c.include Ammeter::RSpec::Rails::GeneratorExampleHelpers,
13
+ :type => :generator
11
14
  c.include Ammeter::RSpec::Rails::GeneratorExampleGroup,
12
15
  :type => :generator,
13
16
  :file_path => lambda { |file_path, metadata|
@@ -15,7 +18,7 @@ RSpec::configure do |c|
15
18
  }
16
19
 
17
20
  else #rspec2
18
-
21
+ c.include Ammeter::RSpec::Rails::GeneratorExampleHelpers, :type => :generator
19
22
  c.include Ammeter::RSpec::Rails::GeneratorExampleGroup, :type => :generator, :example_group => {
20
23
  :file_path => generator_path_regex
21
24
  }
@@ -0,0 +1,29 @@
1
+ require 'rails/generators'
2
+ require 'active_support/core_ext'
3
+
4
+ module Ammeter
5
+ module RSpec
6
+ module Rails
7
+ # Delegates to Rails::Generators::TestCase to work with RSpec.
8
+ module GeneratorExampleHelpers
9
+
10
+ # Sets return values for basic shell commands (ex. ask, yes?, no?).
11
+ # Does this by mocking return values using RSpec's `and_return` method
12
+ #
13
+ # ===== Parameters =====
14
+ # Generator w/ @shell attribute
15
+ # Hash { command_name: input_value, ask: "Testing", yes?: true }
16
+ # The values for each element in the hash can be set as an array as well.
17
+ # This will allow for different return values upon each call.
18
+ #
19
+ # ex. set_shell_prompt_responses(generator, { yes?: [true, false] })
20
+ # would respond with true to the first yes? call, but false to the second
21
+ def set_shell_prompt_responses(generator, command_args={})
22
+ command_args.each do |k,v|
23
+ allow(generator.shell).to receive(k.to_sym).and_return(*v)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Ammeter
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.4"
3
3
  end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ module Ammeter::RSpec::Rails
4
+ describe GeneratorExampleHelpers do
5
+ include GeneratorExampleHelpers
6
+ let(:generator) { MockGenerator.new }
7
+
8
+ it "mocks return value of ask to response" do
9
+ set_shell_prompt_responses(generator, { :ask => "response" })
10
+ expect(generator.shell.ask).to eq("response")
11
+ end
12
+ context "arguments contain multiple shell commands" do
13
+ it "mocks return values response for ask and true for yes?" do
14
+ set_shell_prompt_responses(generator, { :ask => "response", :yes? => true })
15
+ expect(generator.shell.ask).to eq("response")
16
+ expect(generator.shell.yes?).to be true
17
+ end
18
+ end
19
+ context "argument shell command contains an array" do
20
+ it "mocks sequential return values response1 and response2" do
21
+ set_shell_prompt_responses(generator, { :ask => ["response1", "response2"] })
22
+ expect(generator.shell.ask).to eq("response1")
23
+ expect(generator.shell.ask).to eq("response2")
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,10 @@
1
+ # Used in generator_example_helpers_spec.rb
2
+ # set_shell_prompt_responses requires a generator w/ a shell
3
+ # as an argument. This class defines that generator w/ a shell.
4
+ class MockGenerator
5
+ attr_accessor :shell
6
+
7
+ def initialize
8
+ @shell = Object.new
9
+ end
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ammeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rothenberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-07 00:00:00.000000000 Z
11
+ date: 2016-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -223,6 +223,7 @@ files:
223
223
  - ammeter.gemspec
224
224
  - features/generator_in_a_gem.feature
225
225
  - features/generator_spec.feature
226
+ - features/generator_with_shell_prompts_spec.feature
226
227
  - features/hooking_into_other_generators.feature
227
228
  - features/support/aruba_timeout.rb
228
229
  - features/support/env.rb
@@ -242,6 +243,7 @@ files:
242
243
  - lib/ammeter/railtie.rb
243
244
  - lib/ammeter/rspec/generator/example.rb
244
245
  - lib/ammeter/rspec/generator/example/generator_example_group.rb
246
+ - lib/ammeter/rspec/generator/example/generator_example_helpers.rb
245
247
  - lib/ammeter/rspec/generator/matchers.rb
246
248
  - lib/ammeter/rspec/generator/matchers/be_a_migration.rb
247
249
  - lib/ammeter/rspec/generator/matchers/contain.rb
@@ -251,6 +253,7 @@ files:
251
253
  - lib/ammeter/rspec/rspec_2_compatibility.rb
252
254
  - lib/ammeter/version.rb
253
255
  - spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
256
+ - spec/ammeter/rspec/generator/example/generator_example_helpers_spec.rb
254
257
  - spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
255
258
  - spec/ammeter/rspec/generator/matchers/contain_spec.rb
256
259
  - spec/ammeter/rspec/generator/matchers/exist_spec.rb
@@ -260,6 +263,7 @@ files:
260
263
  - spec/support/helpers.rb
261
264
  - spec/support/matchers.rb
262
265
  - spec/support/memoized_helpers_rspec2compatibility.rb
266
+ - spec/support/mock_generator.rb
263
267
  homepage: ''
264
268
  licenses: []
265
269
  metadata: {}
@@ -279,13 +283,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
283
  version: '0'
280
284
  requirements: []
281
285
  rubyforge_project:
282
- rubygems_version: 2.2.2
286
+ rubygems_version: 2.4.3
283
287
  signing_key:
284
288
  specification_version: 4
285
289
  summary: Write specs for your Rails 3+ generators
286
290
  test_files:
287
291
  - features/generator_in_a_gem.feature
288
292
  - features/generator_spec.feature
293
+ - features/generator_with_shell_prompts_spec.feature
289
294
  - features/hooking_into_other_generators.feature
290
295
  - features/support/aruba_timeout.rb
291
296
  - features/support/env.rb
@@ -300,6 +305,7 @@ test_files:
300
305
  - features/templates/my_railties_gem/spec/spec_helper.rb
301
306
  - features/templates/rspec.rake
302
307
  - spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
308
+ - spec/ammeter/rspec/generator/example/generator_example_helpers_spec.rb
303
309
  - spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
304
310
  - spec/ammeter/rspec/generator/matchers/contain_spec.rb
305
311
  - spec/ammeter/rspec/generator/matchers/exist_spec.rb
@@ -309,3 +315,4 @@ test_files:
309
315
  - spec/support/helpers.rb
310
316
  - spec/support/matchers.rb
311
317
  - spec/support/memoized_helpers_rspec2compatibility.rb
318
+ - spec/support/mock_generator.rb