neverfails 0.0.1 → 0.0.2

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.
data/.gitignore CHANGED
@@ -3,4 +3,5 @@
3
3
  *.egg-info
4
4
  build/
5
5
  dist/
6
-
6
+ *.gem
7
+ grocery/
data/HISTORY.md CHANGED
@@ -1,8 +1,2 @@
1
- v0.0.1
2
- ======
3
-
4
- New Features
5
- ------------
6
-
7
- * First working version
8
-
1
+ v0.0.1 2011.08.07 Created the neverfails gem
2
+ v0.0.2 2011.03.01 Added the create-grocery.sh sample script
data/README.md CHANGED
@@ -128,7 +128,7 @@ Then /^I should see the text \"([^\"]*)\"\$/ do |text|
128
128
  end
129
129
  end
130
130
  " > features/step_definitions/fails_steps.rb
131
- cucumber RAILS_ENV=development
131
+ cucumber
132
132
  ```
133
133
 
134
134
  The result is the following, indicating that the *first* step has failed:
@@ -144,8 +144,8 @@ To make the first step pass, we need to create an Apple model and store it in th
144
144
 
145
145
  ``` bash
146
146
  rails g model apple
147
- rake db:migrate
148
- cucumber RAILS_ENV=development
147
+ rake db:migrate RAILS_ENV=test
148
+ cucumber
149
149
  ```
150
150
 
151
151
  The result is now the following, indicating that the *second* step has failed:
@@ -162,20 +162,20 @@ sed -i '' '
162
162
  /get "apples\/index"/ a\
163
163
  match "/apples" => "apples#index"
164
164
  ' config/routes.rb
165
- cucumber RAILS_ENV=development
165
+ cucumber
166
166
  ```
167
167
 
168
168
  The result is now the following, indicating that the *third* step has failed:
169
169
 
170
170
  ```
171
- The text "No apples" left was not found in the current page (Test::Unit::AssertionFailedError)
171
+ The text "No apples left" was not found in the current page (RSpec::Expectations::ExpectationNotMetError)
172
172
  ```
173
173
 
174
174
  To make the third step pass, we need to add the text "No apples left" to the page that lists apples:
175
175
 
176
176
  ``` bash
177
177
  echo "No apples left" >| app/views/apples/index.html.erb
178
- cucumber RAILS_ENV=development
178
+ cucumber
179
179
  ```
180
180
 
181
181
  Step 5 (Run again and see the step pass)
@@ -194,8 +194,8 @@ Feature: Apples
194
194
  3 steps (3 passed)
195
195
  ```
196
196
 
197
- Neverfails does all of this, so you don't have to (TO COMPLETE)
198
- ===============================================================
197
+ Neverfails does all of this, so you don't have to
198
+ =================================================
199
199
 
200
200
  The `grocery` example shows that Behaviour-Driven Development is time-consuming even for very small applications, with an empty model and a view showing one sentence.
201
201
  Time is spent watching the tests fail and writing snippets of code that are common to every web application (creating a model, filling view with text and so on).
@@ -232,7 +232,7 @@ Step 2 (Run and watch it pass)
232
232
  Both the `apples` and the `bananas` scenario can be run with the command:
233
233
 
234
234
  ``` bash
235
- cucumber features/
235
+ cucumber
236
236
  ```
237
237
 
238
238
  The `apples` scenario passes since we already wrote all its required. The `bananas` scenario, though, passes as well:
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ # This script shows what the latest version neverfails is able to do.
3
+ # NOTE: For the sake of speed, this script assumes all the required gems
4
+ # are already installed in the system, so 'bundle install --local' is used.
5
+
6
+ # The script creates a Rails application called 'grocery', adds a feature
7
+ # called banana and runs neverfails to creates the Rails code that generates
8
+ # the Banana model, controller, index view with a given text and sets the
9
+ # route to this view
10
+
11
+ rails new grocery -JT
12
+ cd grocery
13
+ rm public/index.html
14
+ rm public/images/rails.png
15
+ echo -e '\ngem "cucumber"' >> Gemfile
16
+ echo -e '\ngem "cucumber-rails"' >> Gemfile
17
+ echo -e '\ngem "neverfails"' >> Gemfile
18
+ bundle install --local
19
+ rails g cucumber:install
20
+ echo "require 'cucumber/rails'
21
+ require 'neverfails'
22
+ Rails.configuration.cache_classes = false
23
+ Capybara.default_selector = :css
24
+ ActionController::Base.allow_rescue = false" >| features/support/env.rb
25
+ sed -i '' -e's/<<: \*test/<<: *development/' config/database.yml
26
+ rake db:create
27
+ cp ../fails_steps.rb features/step_definitions/
28
+ echo "Feature: Bananas
29
+ Scenario: No bananas left
30
+ Given there are no bananas
31
+ When I browse the list of bananas
32
+ Then I should see the text \"No bananas left\"" > features/bananas.feature
33
+ cucumber
@@ -36,17 +36,14 @@ end
36
36
 
37
37
  def create_missing_page_listing(objects)
38
38
  # Generate the controller
39
- require 'ruby-debug'
40
- debugger
41
- Rails::Generators.invoke("controller", [objects.classify, "index"])
39
+ Rails::Generators.invoke("controller", [objects.classify.pluralize, "index"])
42
40
  # Add an extra route match "/models" => "model#index"
43
- singular = objects.singularize
44
- @@missing_view_file = "app/views/#{singular}/index.html.erb"
41
+ @@missing_view_file = "app/views/#{objects}/index.html.erb"
45
42
  routes_file = 'config/routes.rb'
46
43
  old_routes = File.read(routes_file)
47
44
  File.open(routes_file, "w") do |file|
48
- file.puts old_routes.gsub(/get "#{singular}\/index"/,
49
- "get \"#{singular}/index\"\nmatch \"/#{objects}\" => \"#{singular}#index\"")
45
+ file.puts old_routes.gsub(/get "#{objects}\/index"/,
46
+ "get \"#{objects}/index\"\nmatch \"/#{objects}\" => \"#{objects}#index\"")
50
47
  end
51
48
  # Reload routes
52
49
  ::Rails.application.reload_routes!
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'neverfails'
6
- s.version = '0.0.1'
6
+ s.version = '0.0.2'
7
7
  s.authors = ["Claudio B."]
8
8
  s.email = ["claudiob@gmail.com"]
9
9
  s.homepage = "https://github.com/claudiob/neverfails/tree/rails"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neverfails
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Claudio B.
@@ -62,6 +62,7 @@ files:
62
62
  - MIT-LICENSE
63
63
  - README.md
64
64
  - TODO.md
65
+ - create-grocery.sh
65
66
  - fails_steps.rb
66
67
  - lib/neverfails.rb
67
68
  - neverfails.gemspec