Introduction
Introduction Statistics Contact Development Disclaimer Help
Merge pull request #31 from zeknox/test_suite - warvox - VoIP based wardialing …
Log
Files
Refs
README
---
commit f4e3eb1b43a45ddf1c7999e48563234d8144f57a
parent 60e7d18680788318e47abd21ada018d913f20eb7
Author: HD Moore <[email protected]>
Date: Sat, 24 Oct 2015 10:39:01 -0500
Merge pull request #31 from zeknox/test_suite
Added Initial Feature Tests for Login Page
Diffstat:
M app/controllers/application_contro… | 2 +-
M app/views/projects/index.html.erb | 72 ++++++++++++++---------------…
M spec/factories/jobs.rb | 2 +-
A spec/features/projects_spec.rb | 25 +++++++++++++++++++++++++
A spec/features/visitor/logins_spec.… | 58 +++++++++++++++++++++++++++…
M spec/rails_helper.rb | 46 ++++++++++++++++-------------…
A spec/support/auth_logic_helpers.rb | 21 +++++++++++++++++++++
7 files changed, 162 insertions(+), 64 deletions(-)
---
diff --git a/app/controllers/application_controller.rb b/app/controllers/applic…
@@ -23,7 +23,7 @@ private
def require_user
unless current_user
store_location
- flash[:notice] = "You must be logged in to access this…
+ flash.now[:notice] = "You must be logged in to access …
redirect_to '/login'
return false
end
diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.…
@@ -1,46 +1,40 @@
-<% if @projects.length > 0 %>
<h1 class='title'>WarVOX Projects</h1>
+<p>
+ <a class="btn" href="<%= new_project_path %>">
+ <i class="fa fa-plus"></i> Create Project
+ </a>
+</p>
<%= will_paginate @projects, :renderer => BootstrapPagination::Rails %>
-<table class='table table-striped ' width='90%'>
- <thead>
- <tr>
- <th>Name</th>
- <th>Description</th>
- <th>Jobs</th>
- <th>Calls</th>
- <th>Analyzed</th>
- <th>Created</th>
- <th>Actions</th>
- </tr>
- </thead>
- <tbody>
-
-<% @projects.each do |project| %>
- <tr>
- <td><%= link_to( h(project.name), project_path(project)) %></td>
- <td><%=truncate(project.description, :length => 40, :separator => '') %></…
- <td><%= number_with_delimiter(project.jobs.count) %></td>
- <td><%= number_with_delimiter(project.calls.count) %></td>
- <td><%= number_with_delimiter(project.calls.where('analysis_completed_at I…
- <td><%= time_ago_in_words(project.created_at) %> ago</td>
- <td>
- <a class="btn" href="<%= edit_project_path(project) %>"rel="tool…
- <a class="btn" href="<%= project_path(project) %>" data-confirm="D…
- </td>
- </tr>
-
-<% end %>
-</tbody>
+<table id='projects-table' class='table table-striped' width='90%'>
+ <thead>
+ <tr>
+ <th>Name</th>
+ <th>Description</th>
+ <th>Jobs</th>
+ <th>Calls</th>
+ <th>Analyzed</th>
+ <th>Created</th>
+ <th>Actions</th>
+ </tr>
+ </thead>
+ <tbody>
+ <% @projects.each do |project| %>
+ <tr>
+ <td><%= link_to( h(project.name), project_path…
+ <td><%=truncate(project.description, :length =…
+ <td><%= number_with_delimiter(project.jobs.cou…
+ <td><%= number_with_delimiter(project.calls.co…
+ <td><%= number_with_delimiter(project.calls.wh…
+ <td><%= time_ago_in_words(project.created_at) …
+ <td>
+ <a class="btn" href="<%= edit_project_…
+ <a class="btn" href="<%= project_path(…
+ </td>
+ </tr>
+ <% end %>
+ </tbody>
</table>
<%= will_paginate @projects, :renderer => BootstrapPagination::Rails %>
-<% else %>
-
-<h1 class='title'>No Projects</h1>
-<br/>
-
-<% end %>
-
-<a class="btn" href="<%= new_project_path %>"><i class="fa fa-plus"></i> Creat…
diff --git a/spec/factories/jobs.rb b/spec/factories/jobs.rb
@@ -27,7 +27,7 @@ FactoryGirl.define do
error nil
range { Faker::PhoneNumber.phone_number }
cid_mask { Faker::PhoneNumber.phone_number }
- seconds { Faker::Number.between(1, 300) }
+ seconds { Faker::Number.between(1, 299) }
lines { Faker::Number.between(1, 10000) }
end
diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb
@@ -0,0 +1,25 @@
+require 'rails_helper'
+
+RSpec.feature "Projects", type: :feature do
+
+ before(:each) do
+ @user = create(:user)
+ create_user_session(@user)
+ end
+
+ it "list all existing projects" do
+ project = create(:project)
+ visit projects_path
+ expect(page).to have_content "WarVOX Projects"
+ within "#projects-table" do
+ expect(page).to have_content "Name"
+ expect(page).to have_content "Description"
+ expect(page).to have_content "Jobs"
+ expect(page).to have_content "Calls"
+ expect(page).to have_content "Analyzed"
+ expect(page).to have_content "Created"
+ expect(page).to have_content "Actions"
+ expect(page).to have_content project.name
+ end
+ end
+end
diff --git a/spec/features/visitor/logins_spec.rb b/spec/features/visitor/login…
@@ -0,0 +1,58 @@
+require 'rails_helper'
+
+RSpec.feature "Logins", type: :feature do
+ it "login with valid credentials" do
+ user = create(:user)
+ visit login_path
+ within "#new_user_session" do
+ expect(page).to have_content "Username"
+ expect(page).to have_content "Password"
+ fill_in "user_session_login", with: user.login
+ fill_in "user_session_password", with: 'RandomPass'
+ click_button "Sign in"
+ end
+ within "div.content" do
+ expect(page).to have_content "WarVOX Projects"
+ end
+ end
+
+ it "failed login with invalid password valid username" do
+ user = create(:user)
+ visit login_path
+ within "#new_user_session" do
+ fill_in "user_session_login", with: user.login
+ fill_in "user_session_password", with: 'WrongPassword'
+ click_button "Sign in"
+ end
+ expect(page).to have_content "Password is not valid"
+ end
+
+ it "failed login with invalid username valid password" do
+ user = create(:user)
+ visit login_path
+ within "#new_user_session" do
+ fill_in "user_session_login", with: user.login + "Wron…
+ fill_in "user_session_password", with: 'RandomPass'
+ click_button "Sign in"
+ end
+ expect(page).to have_content "Login is not valid"
+ end
+
+ it "failed login with no input entered" do
+ visit login_path
+ within "#new_user_session" do
+ click_button "Sign in"
+ end
+ expect(page).to have_content "You did not provide any details …
+ end
+
+ it "failed login with no password entered" do
+ user = create(:user)
+ visit login_path
+ within "#new_user_session" do
+ fill_in "user_session_login", with: user.login
+ click_button "Sign in"
+ end
+ expect(page).to have_content "Password cannot be blank"
+ end
+end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
@@ -20,36 +20,36 @@ require 'rspec/rails'
# directory. Alternatively, in the individual `*_spec.rb` files, manually
# require only the support files necessary.
#
-# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
+Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
# Checks for pending migrations before tests are run.
# If you are not using ActiveRecord, you can remove this line.
ActiveRecord::Migration.maintain_test_schema!
RSpec.configure do |config|
- # FactoryGirl Syntax
- config.include FactoryGirl::Syntax::Methods
+ # FactoryGirl Syntax
+ config.include FactoryGirl::Syntax::Methods
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fi…
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
- # examples within a transaction, remove the following line or assign false
- # instead of true.
- config.use_transactional_fixtures = true
+ # If you're not using ActiveRecord, or you'd prefer not to run each of…
+ # examples within a transaction, remove the following line or assign f…
+ # instead of true.
+ config.use_transactional_fixtures = true
- # RSpec Rails can automatically mix in different behaviours to your tests
- # based on their file location, for example enabling you to call `get` and
- # `post` in specs under `spec/controllers`.
- #
- # You can disable this behaviour by removing the line below, and instead
- # explicitly tag your specs with their type, e.g.:
- #
- # RSpec.describe UsersController, :type => :controller do
- # # ...
- # end
- #
- # The different available types are documented in the features, such as in
- # https://relishapp.com/rspec/rspec-rails/docs
- config.infer_spec_type_from_file_location!
+ # RSpec Rails can automatically mix in different behaviours to your te…
+ # based on their file location, for example enabling you to call `get`…
+ # `post` in specs under `spec/controllers`.
+ #
+ # You can disable this behaviour by removing the line below, and inste…
+ # explicitly tag your specs with their type, e.g.:
+ #
+ # RSpec.describe UsersController, :type => :controller do
+ # # ...
+ # end
+ #
+ # The different available types are documented in the features, such a…
+ # https://relishapp.com/rspec/rspec-rails/docs
+ config.infer_spec_type_from_file_location!
end
diff --git a/spec/support/auth_logic_helpers.rb b/spec/support/auth_logic_helpe…
@@ -0,0 +1,20 @@
+module Authlogic
+ module TestHelper
+ def create_user_session(user)
+ visit login_path
+ within "#new_user_session" do
+ expect(page).to have_content "Username"
+ expect(page).to have_content "Password"
+ fill_in "user_session_login", with: user.login
+ fill_in "user_session_password", with: user.pa…
+ click_button "Sign in"
+ end
+ end
+ end
+end
+
+# Make this available to just the request and feature specs
+RSpec.configure do |config|
+ config.include Authlogic::TestHelper, type: :request
+ config.include Authlogic::TestHelper, type: :feature
+end
+\ No newline at end of file
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.