neverfails 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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