Skip to content
Browse files

Red: login feature

  • Loading branch information...
1 parent f8618b4 commit 294522c7df1174f367151676be4c4cc0da0fa61e @jasonm committed
View
5 app/controllers/homes_controller.rb
@@ -0,0 +1,5 @@
+class HomesController < ApplicationController
+ def show
+ render text: "yo"
+ end
+end
View
59 config/routes.rb
@@ -1,60 +1,3 @@
ChatApp::Application.routes.draw do
- root :to => 'Clearance::Sessions#new'
-
- # The priority is based upon order of creation:
- # first created -> highest priority.
-
- # Sample of regular route:
- # match 'products/:id' => 'catalog#view'
- # Keep in mind you can assign values other than :controller and :action
-
- # Sample of named route:
- # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
- # This route can be invoked with purchase_url(:id => product.id)
-
- # Sample resource route (maps HTTP verbs to controller actions automatically):
- # resources :products
-
- # Sample resource route with options:
- # resources :products do
- # member do
- # get 'short'
- # post 'toggle'
- # end
- #
- # collection do
- # get 'sold'
- # end
- # end
-
- # Sample resource route with sub-resources:
- # resources :products do
- # resources :comments, :sales
- # resource :seller
- # end
-
- # Sample resource route with more complex sub-resources
- # resources :products do
- # resources :comments
- # resources :sales do
- # get 'recent', :on => :collection
- # end
- # end
-
- # Sample resource route within a namespace:
- # namespace :admin do
- # # Directs /admin/products/* to Admin::ProductsController
- # # (app/controllers/admin/products_controller.rb)
- # resources :products
- # end
-
- # You can have the root of your site routed with "root"
- # just remember to delete public/index.html.
- # root :to => 'welcome#index'
-
- # See how all your routes lay out with "rake routes"
-
- # This is a legacy wild controller route that's not recommended for RESTful applications.
- # Note: This route will make all actions in every controller accessible via GET requests.
- # match ':controller(/:action(/:id(.:format)))'
+ root to: "homes#show"
end
View
16 features/step_definitions/login_steps.rb
@@ -0,0 +1,16 @@
+Then /^I should be logged out$/ do
+ page.should have_no_content "Logged in as"
+end
+
+When /^I log in as "([^"]*)"$/ do |name|
+ fill_in("Your name", with: name)
+ click_button("Login")
+end
+
+Then /^I should be logged in as "([^"]*)"$/ do |name|
+ page.should have_no_content "Logged in as #{name}"
+end
+
+When /^I log out$/ do
+ click_link("Log out")
+end
View
212 features/step_definitions/old_web_steps.rb
@@ -0,0 +1,212 @@
+# TL;DR: YOU SHOULD DELETE THIS FILE
+#
+# This file was generated by Cucumber-Rails and is only here to get you a head start
+# These step definitions are thin wrappers around the Capybara/Webrat API that lets you
+# visit pages, interact with widgets and make assertions about page content.
+#
+# If you use these step definitions as basis for your features you will quickly end up
+# with features that are:
+#
+# * Hard to maintain
+# * Verbose to read
+#
+# A much better approach is to write your own higher level step definitions, following
+# the advice in the following blog posts:
+#
+# * http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html
+# * http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/
+# * http://elabs.se/blog/15-you-re-cuking-it-wrong
+#
+
+
+# require 'uri'
+# require 'cgi'
+# require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
+# require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
+#
+# module WithinHelpers
+# def with_scope(locator)
+# locator ? within(*selector_for(locator)) { yield } : yield
+# end
+# end
+# World(WithinHelpers)
+#
+# # Single-line step scoper
+# When /^(.*) within (.*[^:])$/ do |step, parent|
+# with_scope(parent) { When step }
+# end
+#
+# # Multi-line step scoper
+# When /^(.*) within (.*[^:]):$/ do |step, parent, table_or_string|
+# with_scope(parent) { When "#{step}:", table_or_string }
+# end
+#
+# Given /^(?:|I )am on (.+)$/ do |page_name|
+# visit path_to(page_name)
+# end
+#
+# When /^(?:|I )go to (.+)$/ do |page_name|
+# visit path_to(page_name)
+# end
+#
+# When /^(?:|I )press "([^"]*)"$/ do |button|
+# click_button(button)
+# end
+#
+# When /^(?:|I )follow "([^"]*)"$/ do |link|
+# click_link(link)
+# end
+#
+# When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
+# fill_in(field, :with => value)
+# end
+#
+# When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
+# fill_in(field, :with => value)
+# end
+#
+# # Use this to fill in an entire form with data from a table. Example:
+# #
+# # When I fill in the following:
+# # | Account Number | 5002 |
+# # | Expiry date | 2009-11-01 |
+# # | Note | Nice guy |
+# # | Wants Email? | |
+# #
+# # TODO: Add support for checkbox, select og option
+# # based on naming conventions.
+# #
+# When /^(?:|I )fill in the following:$/ do |fields|
+# fields.rows_hash.each do |name, value|
+# When %{I fill in "#{name}" with "#{value}"}
+# end
+# end
+#
+# When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
+# select(value, :from => field)
+# end
+#
+# When /^(?:|I )check "([^"]*)"$/ do |field|
+# check(field)
+# end
+#
+# When /^(?:|I )uncheck "([^"]*)"$/ do |field|
+# uncheck(field)
+# end
+#
+# When /^(?:|I )choose "([^"]*)"$/ do |field|
+# choose(field)
+# end
+#
+# When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
+# attach_file(field, File.expand_path(path))
+# end
+#
+# Then /^(?:|I )should see "([^"]*)"$/ do |text|
+# if page.respond_to? :should
+# page.should have_content(text)
+# else
+# assert page.has_content?(text)
+# end
+# end
+#
+# Then /^(?:|I )should see \\/([^\\/]*)\\/$/ do |regexp|
+# regexp = Regexp.new(regexp)
+#
+# if page.respond_to? :should
+# page.should have_xpath('//*', :text => regexp)
+# else
+# assert page.has_xpath?('//*', :text => regexp)
+# end
+# end
+#
+# Then /^(?:|I )should not see "([^"]*)"$/ do |text|
+# if page.respond_to? :should
+# page.should have_no_content(text)
+# else
+# assert page.has_no_content?(text)
+# end
+# end
+#
+# Then /^(?:|I )should not see \\/([^\\/]*)\\/$/ do |regexp|
+# regexp = Regexp.new(regexp)
+#
+# if page.respond_to? :should
+# page.should have_no_xpath('//*', :text => regexp)
+# else
+# assert page.has_no_xpath?('//*', :text => regexp)
+# end
+# end
+#
+# Then /^the "([^"]*)" field(?: within (.*))? should contain "([^"]*)"$/ do |field, parent, value|
+# with_scope(parent) do
+# field = find_field(field)
+# field_value = (field.tag_name == 'textarea') ? field.text : field.value
+# if field_value.respond_to? :should
+# field_value.should =~ /#{value}/
+# else
+# assert_match(/#{value}/, field_value)
+# end
+# end
+# end
+#
+# Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |field, parent, value|
+# with_scope(parent) do
+# field = find_field(field)
+# field_value = (field.tag_name == 'textarea') ? field.text : field.value
+# if field_value.respond_to? :should_not
+# field_value.should_not =~ /#{value}/
+# else
+# assert_no_match(/#{value}/, field_value)
+# end
+# end
+# end
+#
+# Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
+# with_scope(parent) do
+# field_checked = find_field(label)['checked']
+# if field_checked.respond_to? :should
+# field_checked.should be_true
+# else
+# assert field_checked
+# end
+# end
+# end
+#
+# Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
+# with_scope(parent) do
+# field_checked = find_field(label)['checked']
+# if field_checked.respond_to? :should
+# field_checked.should be_false
+# else
+# assert !field_checked
+# end
+# end
+# end
+#
+# Then /^(?:|I )should be on (.+)$/ do |page_name|
+# current_path = URI.parse(current_url).path
+# if current_path.respond_to? :should
+# current_path.should == path_to(page_name)
+# else
+# assert_equal path_to(page_name), current_path
+# end
+# end
+#
+# Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
+# query = URI.parse(current_url).query
+# actual_params = query ? CGI.parse(query) : {}
+# expected_params = {}
+# expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
+#
+# if actual_params.respond_to? :should
+# actual_params.should == expected_params
+# else
+# assert_equal expected_params, actual_params
+# end
+# end
+#
+# Then /^show me the page$/ do
+# save_and_open_page
+# end
+
View
204 features/step_definitions/web_steps.rb
@@ -1,45 +1,4 @@
-# TL;DR: YOU SHOULD DELETE THIS FILE
-#
-# This file was generated by Cucumber-Rails and is only here to get you a head start
-# These step definitions are thin wrappers around the Capybara/Webrat API that lets you
-# visit pages, interact with widgets and make assertions about page content.
-#
-# If you use these step definitions as basis for your features you will quickly end up
-# with features that are:
-#
-# * Hard to maintain
-# * Verbose to read
-#
-# A much better approach is to write your own higher level step definitions, following
-# the advice in the following blog posts:
-#
-# * http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html
-# * http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/
-# * http://elabs.se/blog/15-you-re-cuking-it-wrong
-#
-
-
-require 'uri'
-require 'cgi'
-require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
-require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
-
-module WithinHelpers
- def with_scope(locator)
- locator ? within(*selector_for(locator)) { yield } : yield
- end
-end
-World(WithinHelpers)
-
-# Single-line step scoper
-When /^(.*) within (.*[^:])$/ do |step, parent|
- with_scope(parent) { When step }
-end
-
-# Multi-line step scoper
-When /^(.*) within (.*[^:]):$/ do |step, parent, table_or_string|
- with_scope(parent) { When "#{step}:", table_or_string }
-end
+# Moved default generated file to old_web_steps.rb for reference.
Given /^(?:|I )am on (.+)$/ do |page_name|
visit path_to(page_name)
@@ -48,164 +7,3 @@ def with_scope(locator)
When /^(?:|I )go to (.+)$/ do |page_name|
visit path_to(page_name)
end
-
-When /^(?:|I )press "([^"]*)"$/ do |button|
- click_button(button)
-end
-
-When /^(?:|I )follow "([^"]*)"$/ do |link|
- click_link(link)
-end
-
-When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
- fill_in(field, :with => value)
-end
-
-When /^(?:|I )fill in "([^"]*)" for "([^"]*)"$/ do |value, field|
- fill_in(field, :with => value)
-end
-
-# Use this to fill in an entire form with data from a table. Example:
-#
-# When I fill in the following:
-# | Account Number | 5002 |
-# | Expiry date | 2009-11-01 |
-# | Note | Nice guy |
-# | Wants Email? | |
-#
-# TODO: Add support for checkbox, select og option
-# based on naming conventions.
-#
-When /^(?:|I )fill in the following:$/ do |fields|
- fields.rows_hash.each do |name, value|
- When %{I fill in "#{name}" with "#{value}"}
- end
-end
-
-When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
- select(value, :from => field)
-end
-
-When /^(?:|I )check "([^"]*)"$/ do |field|
- check(field)
-end
-
-When /^(?:|I )uncheck "([^"]*)"$/ do |field|
- uncheck(field)
-end
-
-When /^(?:|I )choose "([^"]*)"$/ do |field|
- choose(field)
-end
-
-When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
- attach_file(field, File.expand_path(path))
-end
-
-Then /^(?:|I )should see "([^"]*)"$/ do |text|
- if page.respond_to? :should
- page.should have_content(text)
- else
- assert page.has_content?(text)
- end
-end
-
-Then /^(?:|I )should see \/([^\/]*)\/$/ do |regexp|
- regexp = Regexp.new(regexp)
-
- if page.respond_to? :should
- page.should have_xpath('//*', :text => regexp)
- else
- assert page.has_xpath?('//*', :text => regexp)
- end
-end
-
-Then /^(?:|I )should not see "([^"]*)"$/ do |text|
- if page.respond_to? :should
- page.should have_no_content(text)
- else
- assert page.has_no_content?(text)
- end
-end
-
-Then /^(?:|I )should not see \/([^\/]*)\/$/ do |regexp|
- regexp = Regexp.new(regexp)
-
- if page.respond_to? :should
- page.should have_no_xpath('//*', :text => regexp)
- else
- assert page.has_no_xpath?('//*', :text => regexp)
- end
-end
-
-Then /^the "([^"]*)" field(?: within (.*))? should contain "([^"]*)"$/ do |field, parent, value|
- with_scope(parent) do
- field = find_field(field)
- field_value = (field.tag_name == 'textarea') ? field.text : field.value
- if field_value.respond_to? :should
- field_value.should =~ /#{value}/
- else
- assert_match(/#{value}/, field_value)
- end
- end
-end
-
-Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |field, parent, value|
- with_scope(parent) do
- field = find_field(field)
- field_value = (field.tag_name == 'textarea') ? field.text : field.value
- if field_value.respond_to? :should_not
- field_value.should_not =~ /#{value}/
- else
- assert_no_match(/#{value}/, field_value)
- end
- end
-end
-
-Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
- with_scope(parent) do
- field_checked = find_field(label)['checked']
- if field_checked.respond_to? :should
- field_checked.should be_true
- else
- assert field_checked
- end
- end
-end
-
-Then /^the "([^"]*)" checkbox(?: within (.*))? should not be checked$/ do |label, parent|
- with_scope(parent) do
- field_checked = find_field(label)['checked']
- if field_checked.respond_to? :should
- field_checked.should be_false
- else
- assert !field_checked
- end
- end
-end
-
-Then /^(?:|I )should be on (.+)$/ do |page_name|
- current_path = URI.parse(current_url).path
- if current_path.respond_to? :should
- current_path.should == path_to(page_name)
- else
- assert_equal path_to(page_name), current_path
- end
-end
-
-Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
- query = URI.parse(current_url).query
- actual_params = query ? CGI.parse(query) : {}
- expected_params = {}
- expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')}
-
- if actual_params.respond_to? :should
- actual_params.should == expected_params
- else
- assert_equal expected_params, actual_params
- end
-end
-
-Then /^show me the page$/ do
- save_and_open_page
-end
View
17 features/visitor/login.feature
@@ -0,0 +1,17 @@
+@javascript
+Feature: Visitor can login
+
+ Scenario: Not logged in by default
+ When I go to the home page
+ Then I should be logged out
+
+ Scenario: As a visitor, I can log in
+ When I go to the home page
+ And I log in as "Jason"
+ Then I should be logged in as "Jason"
+
+ Scenario: Log out
+ When I go to the home page
+ And I log in as "Jason"
+ And I log out
+ Then I should be logged out

0 comments on commit 294522c

Please sign in to comment.
Something went wrong with that request. Please try again.