diff --git a/app/assets/stylesheets/_base.css.scss b/app/assets/stylesheets/_base.css.scss
index 33a00ca32..9b354abab 100644
--- a/app/assets/stylesheets/_base.css.scss
+++ b/app/assets/stylesheets/_base.css.scss
@@ -85,7 +85,7 @@ table tr td .btn {
}
.bridgetroll-content {
- width: 1000px;
+ width: 900px;
margin-left: auto;
margin-right: auto;
background-color: $content-background-color;
@@ -117,8 +117,13 @@ table tr td .btn {
margin: 20px 0 0 0;
list-style-type: none;
+ &.mission-control-actions {
+ margin: 0 0 20px 0;
+ }
+
li {
display: inline-block;
+ margin: 10px 10px 0 0;
}
}
@@ -181,7 +186,6 @@ table tr td .btn {
border-radius: 10px;
}
-
// BOOTSTRAP OVERRIDES, Yo. Frowny buckets.
.container::before,
diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb
index ace95ae49..f3285c3de 100644
--- a/app/controllers/events_controller.rb
+++ b/app/controllers/events_controller.rb
@@ -1,7 +1,7 @@
class EventsController < ApplicationController
- before_filter :authenticate_user!, only: [:new, :edit, :create, :update, :destroy]
- before_filter :find_event, only: [:show, :edit, :update, :destroy, :volunteer_emails]
- before_filter :require_organizer, only: [:edit, :update, :destroy, :volunteer_emails]
+ before_filter :authenticate_user!, except: [:index, :show]
+ before_filter :find_event, only: [:show, :edit, :update, :destroy, :volunteer_emails, :organize]
+ before_filter :require_organizer, only: [:edit, :update, :destroy, :volunteer_emails, :organize]
before_filter :assign_organizer, only: [:show, :edit, :update, :destroy]
before_filter :set_time_zone, only: [:create, :update]
@@ -49,6 +49,9 @@ def volunteer_emails
@volunteers = @event.volunteers
end
+ def organize
+ end
+
protected
def set_time_zone
diff --git a/app/views/checkins/index.html.erb b/app/views/checkins/index.html.erb
index 9e16a9742..7b71640aa 100644
--- a/app/views/checkins/index.html.erb
+++ b/app/views/checkins/index.html.erb
@@ -1,4 +1,6 @@
-
Check in volunteers to <%= @session.name %>
+<%= render 'events/header' %>
+
+Check in volunteers to <%= @session.name %>
<%= render 'shared/actions', links: [
- ['Back', event_path(@event)],
+ ['Back', organize_event_path(@event)],
] %>
diff --git a/app/views/events/_header.html.erb b/app/views/events/_header.html.erb
new file mode 100644
index 000000000..1f761f7ef
--- /dev/null
+++ b/app/views/events/_header.html.erb
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/app/views/events/edit.html.erb b/app/views/events/edit.html.erb
index 940ce23b4..bb57e67f9 100644
--- a/app/views/events/edit.html.erb
+++ b/app/views/events/edit.html.erb
@@ -1,12 +1,11 @@
+<%= render 'events/header' %>
+
Editing event
<%= render 'form' %>
<%= render 'shared/actions', links: [
- ['Show', @event],
- ['Back', events_path],
+ ['Back', @event],
['Manage Locations', locations_path],
- ['Manage Organizers', event_organizers_path(@event)],
- ['Manage Volunteers', event_volunteers_path(@event)]
] %>
diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb
index 37b69c850..fe7b8e83f 100644
--- a/app/views/events/index.html.erb
+++ b/app/views/events/index.html.erb
@@ -22,7 +22,7 @@
<% if user_signed_in? %>
<% if event.organizer?(current_user) %>
- You are the Organizer for this event!
+ <%= link_to 'Organizer Console', organize_event_path(event), :class => 'btn' %>
|
<% elsif event.volunteer?(current_user) %>
diff --git a/app/views/events/new.html.erb b/app/views/events/new.html.erb
index 7368b8b12..09a9c5654 100644
--- a/app/views/events/new.html.erb
+++ b/app/views/events/new.html.erb
@@ -1,5 +1,8 @@
-New event
-
+
<%= render 'form' %>
<%= render 'shared/actions', links: [
diff --git a/app/views/events/organize.html.erb b/app/views/events/organize.html.erb
new file mode 100644
index 000000000..60061162f
--- /dev/null
+++ b/app/views/events/organize.html.erb
@@ -0,0 +1,64 @@
+<%= render 'header' %>
+
+Super Secret Organizer Mission Control Console
+
+<% checkin_links = [] %>
+
+<% @event.event_sessions.each do |session| %>
+ <% checkin_links << ["Check in for #{session.name}", event_event_session_checkins_path(@event, session)] %>
+<% end %>
+<%= render 'shared/actions', links: checkin_links, additional_class: 'mission-control-actions' %>
+
+<%= render 'shared/actions', additional_class: 'mission-control-actions', links: [
+ ['Manage Organizers', event_organizers_path(@event)],
+ ['Manage Volunteers', event_volunteers_path(@event)],
+ ['Email Volunteers', volunteer_emails_event_path(@event)]
+] %>
+
+<%= render 'shared/actions', additional_class: 'mission-control-actions', links: [
+ ['Edit Event', edit_event_path(@event)],
+ ['View Event', event_path(@event)],
+] %>
+
+Volunteer Teaching Preference Totals
+You can assign people's roles on the Manage Volunteers page.
+
+
+
+ Wants to teach |
+ Wants to TA |
+ No preference |
+ Non-teaching volunteer |
+ Total volunteers |
+
+
+
+
+ <%= teachers_count(@event.volunteer_rsvps) %> |
+ <%= tas_count(@event.volunteer_rsvps) %> |
+ <%= teach_or_ta_count(@event.volunteer_rsvps) %> |
+ <%= not_teach_or_ta_count(@event.volunteer_rsvps) %> |
+ <%= @event.volunteer_rsvps.length %> |
+
+
+
+
+
+ Willing to Teach: <%= teachers_count(@event.volunteer_rsvps) %>
+ <%= partitioned_volunteer_list(@event.volunteer_rsvps, :teachers) %>
+
+ Willing to TA: <%= tas_count(@event.volunteer_rsvps) %>
+ <%= partitioned_volunteer_list(@event.volunteer_rsvps, :tas) %>
+
+ Willing to Teach or TA: <%= teach_or_ta_count(@event.volunteer_rsvps) %>
+ <%= partitioned_volunteer_list(@event.volunteer_rsvps, :teach_or_tas) %>
+
+ Not Interested in Teaching: <%= not_teach_or_ta_count(@event.volunteer_rsvps) %>
+ <%= partitioned_volunteer_list(@event.volunteer_rsvps, :not_teach_or_tas) %>
+
+ All Volunteers: <%= @event.volunteer_rsvps.length %>
+
+
+<%= render 'shared/actions', links: [
+ ['Back', events_path],
+] %>
diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb
index 579ac730d..e7dab01b7 100644
--- a/app/views/events/show.html.erb
+++ b/app/views/events/show.html.erb
@@ -18,7 +18,7 @@
<% @event.event_sessions.each do |event_session| %>
- <%= event_session.name %>
+ <%= event_session.name %>
<%= formatted_session_date(event_session) %>
Start time: <%= formatted_session_time(event_session, :starts_at) %>
End time: <%= formatted_session_time(event_session, :ends_at) %>
@@ -27,74 +27,18 @@
- Details:
-
<%= simple_format_with_html(@event.details) %>
- Volunteers:
- <% if @event.volunteer_rsvps.none? %>
- No volunteers are currently signed up for this event.
- <% else %>
- <% if @organizer %>
- Willing to Teach: <%= teachers_count(@event.volunteer_rsvps) %>
- <%= partitioned_volunteer_list(@event.volunteer_rsvps, :teachers) %>
-
- Willing to TA: <%= tas_count(@event.volunteer_rsvps) %>
- <%= partitioned_volunteer_list(@event.volunteer_rsvps, :tas) %>
-
- Willing to Teach or TA: <%= teach_or_ta_count(@event.volunteer_rsvps) %>
- <%= partitioned_volunteer_list(@event.volunteer_rsvps, :teach_or_tas) %>
-
- Not Interested in Teaching: <%= not_teach_or_ta_count(@event.volunteer_rsvps) %>
- <%= partitioned_volunteer_list(@event.volunteer_rsvps, :not_teach_or_tas) %>
-
- All Volunteers: <%= @event.volunteer_rsvps.length %>
- <% end %>
-
-
-
-
- Name |
- <% if @organizer %>
- Email |
- <% end %>
- Skills |
-
-
-
- <% @event.volunteer_rsvps.each do |rsvp| %>
-
- <%= link_to rsvp.user.full_name, rsvp.user.profile_path %> |
- <% if @organizer %>
- <%= rsvp.user.email %> |
- <% end %>
- <%= get_volunteer_skills(rsvp) %> |
-
- <% end %>
-
-
-
- <% end %>
-
<% links = [] %>
<% if @organizer %>
- <% @event.event_sessions.each do |session| %>
- <% links << ["Check in for #{session.name}", event_event_session_checkins_path(@event, session)] %>
- <% end %>
-
<% links << ['Edit', edit_event_path(@event)] %>
+ <% links << ['Organizer Console', organize_event_path(@event)] %>
<% end %>
<% links << ['Back', events_path] %>
- <% if @organizer %>
- <% links << ['Manage Organizers', event_organizers_path(@event)] %>
- <% links << ['Manage Volunteers', event_volunteers_path(@event)] %>
- <% links << ['Email Volunteers', volunteer_emails_event_path(@event)] %>
- <% end %>
-
<%= render 'shared/actions', links: links %>
@@ -107,7 +51,7 @@
- <%= organizer_title %>
+ Organized By:
<% if organizer_list.any? %>
<% organizer_list.each do |organizer| %>
@@ -123,6 +67,26 @@
<% end %>
-
+ Who's volunteering?
+ <% if @event.volunteer_rsvps.none? %>
+ No volunteers are currently signed up for this event.
+ <% else %>
+
+
+
+ Name |
+ Skills |
+
+
+
+ <% @event.volunteer_rsvps.each do |rsvp| %>
+
+ <%= link_to rsvp.user.full_name, rsvp.user.profile_path %> |
+ <%= get_volunteer_skills(rsvp) %> |
+
+ <% end %>
+
+
+ <% end %>
diff --git a/app/views/events/volunteer_emails.erb b/app/views/events/volunteer_emails.erb
index c6b04f9df..b479db4c1 100644
--- a/app/views/events/volunteer_emails.erb
+++ b/app/views/events/volunteer_emails.erb
@@ -1,7 +1,11 @@
-Volunteer Emails for <%= @event.title %>
+<%= render 'events/header' %>
+
+Volunteer Emails
Copy these addresses into your email to contact the volunteers.
+It's probably a good practice to BCC everyone for privacy's sake (and avoiding terrible reply-all fests).
+
<% @volunteers.each do |volunteer| %>
@@ -10,3 +14,7 @@
<% end %>
+
+<%= render 'shared/actions', links: [
+ ['Back', organize_event_path(@event)]
+] %>
diff --git a/app/views/organizers/index.html.erb b/app/views/organizers/index.html.erb
index 945fa40fb..4bbb59e9e 100644
--- a/app/views/organizers/index.html.erb
+++ b/app/views/organizers/index.html.erb
@@ -1,3 +1,5 @@
+<%= render 'events/header' %>
+
Organizer Assignments
Event: <%= link_to " #{@event.title}", event_path(@event)%>
@@ -41,5 +43,5 @@
<%= render 'shared/actions', links: [
- ['Back', event_path(@event)]
+ ['Back', organize_event_path(@event)]
] %>
diff --git a/app/views/shared/_actions.html.erb b/app/views/shared/_actions.html.erb
index 7adf9e64e..3b42b11bb 100644
--- a/app/views/shared/_actions.html.erb
+++ b/app/views/shared/_actions.html.erb
@@ -1,4 +1,4 @@
-
+
<% links.each do |link_data| %>
<% next unless link_data %>
- <%= link_to link_data[0], link_data[1], class: 'btn' %>
diff --git a/app/views/volunteers/index.html.erb b/app/views/volunteers/index.html.erb
index 849bf4677..f0380cf0a 100644
--- a/app/views/volunteers/index.html.erb
+++ b/app/views/volunteers/index.html.erb
@@ -1,3 +1,5 @@
+<%= render 'events/header' %>
+
Volunteer Assignments
Event: <%= link_to " #{@event.title}", event_path(@event)%>
@@ -32,6 +34,6 @@
<%= render 'shared/actions', links: [
- ['Back', event_path(@event)]
+ ['Back', organize_event_path(@event)]
] %>
diff --git a/config/routes.rb b/config/routes.rb
index 5ef154ee4..ad9e7f350 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -17,8 +17,8 @@
resources :event_sessions, :only => [] do
resources :checkins, :only => [:index, :create, :destroy]
end
-
get "volunteer_emails" => "events#volunteer_emails", :on => :member
+ get "organize", :on => :member
end
get "/auth/:provider/callback" => "omniauths#callback"
diff --git a/spec/controllers/events_controller_spec.rb b/spec/controllers/events_controller_spec.rb
index 72b7419de..3c2dbb344 100644
--- a/spec/controllers/events_controller_spec.rb
+++ b/spec/controllers/events_controller_spec.rb
@@ -179,6 +179,27 @@ def make_request(params = {})
end
end
+ describe "GET organize" do
+ def make_request(params = {})
+ get :organize, id: @event.id
+ end
+
+ it_behaves_like "an event action that requires an organizer"
+
+ context "organizer is logged in" do
+ before do
+ user = create(:user)
+ @event.organizers << user
+ sign_in user
+ end
+
+ it "should be successful" do
+ make_request
+ response.should be_success
+ end
+ end
+ end
+
describe "PUT update" do
def make_request(params = {})
put :update, id: @event.id, event: params
diff --git a/spec/requests/event_listing_request_spec.rb b/spec/requests/event_listing_request_spec.rb
index f78cb4bfd..df9149441 100644
--- a/spec/requests/event_listing_request_spec.rb
+++ b/spec/requests/event_listing_request_spec.rb
@@ -71,7 +71,7 @@
page.should have_content("February Event")
page.should have_content("AKST") # alaska time code!
- page.should have_content("You are the Organizer for this event!")
+ page.should have_content("Organizer Console")
end
context 'given an event' do
diff --git a/spec/requests/event_organizer_dashboard_request_spec.rb b/spec/requests/event_organizer_dashboard_request_spec.rb
new file mode 100644
index 000000000..d82587414
--- /dev/null
+++ b/spec/requests/event_organizer_dashboard_request_spec.rb
@@ -0,0 +1,101 @@
+require 'spec_helper'
+
+describe "the organizer dashboard" do
+ before do
+ @organizer = create(:user)
+ @event = create(:event, :title => 'RailsBridge for Dik Diks')
+ @event.organizers << @organizer
+ sign_in_as(@organizer)
+ end
+
+ it "should have a page" do
+ visit organize_event_path(@event)
+ page.should have_content('RailsBridge for Dik Diks')
+ end
+
+ it "lets the user manage organizers" do
+ visit organize_event_path(@event)
+ click_link "Manage Organizers"
+ page.should have_content("Organizer Assignment")
+ end
+
+ it "lets the user manage volunteers" do
+ visit organize_event_path(@event)
+ click_link "Manage Volunteers"
+ page.should have_content("Volunteer Assignment")
+ end
+
+ it "shows all volunteer information" do
+ 4.times { create(:rsvp, event: @event, teaching: true) }
+ 3.times { create(:rsvp, event: @event, taing: true) }
+ 2.times { create(:rsvp, event: @event, teaching: true, taing: true) }
+ 1.times { create(:rsvp, event: @event) }
+
+ volunteer = create(:user)
+ create(:rsvp, user: volunteer, event: @event, teaching: true)
+
+ visit organize_event_path(@event)
+ page.should have_content(volunteer.email)
+ page.should have_content(volunteer.full_name)
+ page.should have_content("#{volunteer.full_name} - #{volunteer.email}")
+
+ page.should have_content("Willing to Teach: 5")
+ page.should have_content("Willing to TA: 3")
+ page.should have_content("Willing to Teach or TA: 2")
+ page.should have_content("Not Interested in Teaching: 1")
+ page.should have_content("All Volunteers: 11")
+
+ page.should have_css('.teach', count: 5)
+ page.should have_css('.ta', count: 3)
+ page.should have_css('.both', count: 2)
+ page.should have_css('.none', count: 1)
+ end
+
+ it "lets the user check in volunteers", js: true do
+ user1 = create(:user, first_name: 'Anthony')
+ user2 = create(:user, first_name: 'Bapp')
+
+ session1 = @event.event_sessions.first
+ session1.update_attribute(:name, 'Installfest')
+ session2 = create(:event_session, event: @event, name: 'Curriculum')
+
+ rsvp1 = create(:rsvp, user: user1, event: @event)
+ rsvp2 = create(:rsvp, user: user2, event: @event)
+
+ rsvp_session1 = create(:rsvp_session, rsvp: rsvp1, event_session: session1)
+ rsvp_session2 = create(:rsvp_session, rsvp: rsvp2, event_session: session1)
+
+ visit organize_event_path(@event)
+
+ page.should have_content("Check in for Installfest")
+ page.should have_content("Check in for Curriculum")
+
+ click_link("Check in for Installfest")
+ page.should have_content(user1.first_name)
+
+ within "#edit_rsvp_session_#{rsvp_session1.id}" do
+ click_on 'Check In'
+ page.should have_content('Checked In!')
+ end
+
+ rsvp_session1.reload.should be_checked_in
+ rsvp_session2.reload.should_not be_checked_in
+
+ within "#edit_rsvp_session_#{rsvp_session2.id}" do
+ click_on 'Check In'
+ page.should have_content('Checked In!')
+ end
+
+ rsvp_session1.reload.should be_checked_in
+ rsvp_session2.reload.should be_checked_in
+
+ visit event_event_session_checkins_path(@event, session1)
+
+ within "#edit_rsvp_session_#{rsvp_session1.id}" do
+ page.should have_content 'Checked In'
+ end
+ within "#edit_rsvp_session_#{rsvp_session2.id}" do
+ page.should have_content 'Checked In'
+ end
+ end
+end
\ No newline at end of file
diff --git a/spec/requests/individual_event_page_request_spec.rb b/spec/requests/individual_event_page_request_spec.rb
index 4362a2a84..bb3402175 100644
--- a/spec/requests/individual_event_page_request_spec.rb
+++ b/spec/requests/individual_event_page_request_spec.rb
@@ -12,7 +12,6 @@
create(:rsvp, :user => user1, :event => @event)
visit event_path(@event)
- page.should have_content("Volunteers")
page.should have_content(user1.full_name)
page.should_not have_content(user2.full_name)
end
@@ -35,9 +34,8 @@
end
end
- it "does not display the Manage Organizers link or Edit link" do
+ it "does not display the Edit link" do
visit event_path(@event)
- page.should_not have_content("Manage Organizers")
page.should_not have_content("Edit")
end
@@ -52,9 +50,8 @@
sign_in_as(create(:user))
end
- it "does not display the Manage Organizers link or Edit link" do
+ it "does not display the Edit link" do
visit event_path(@event)
- page.should_not have_content("Manage Organizers")
page.should_not have_content("Edit")
end
@@ -62,20 +59,6 @@
visit event_path(@event)
page.should have_content("public_email@example.org")
end
-
- it "doesn't display sensitive volunteer information" do
- volunteer = create(:user)
- rsvp = create(:rsvp, user: volunteer, event: @event, teaching: true)
-
- visit event_path(@event)
- page.should have_content(volunteer.full_name)
-
- page.should_not have_content(volunteer.email)
- page.should_not have_content("Willing to Teach:")
- page.should_not have_content("Willing to TA:")
- page.should_not have_content("Willing to Teach or TA")
- page.should_not have_content("Not Interested in Teaching")
- end
end
context "user is logged in and is an organizer of the event" do
@@ -85,18 +68,6 @@
sign_in_as(user)
end
- it "lets the user manage organizers" do
- visit event_path(@event)
- click_link "Manage Organizers"
- page.should have_content("Organizer Assignment")
- end
-
- it "lets the user manage volunteers" do
- visit event_path(@event)
- click_link "Manage Volunteers"
- page.should have_content("Volunteer Assignment")
- end
-
it "lets the user edit the event" do
visit event_path(@event)
click_link "Edit"
@@ -106,125 +77,5 @@
visit event_path(@event)
page.should have_content "New totally awesome event"
end
-
- it "shows all volunteer information" do
- 4.times { create(:rsvp, event: @event, teaching: true) }
- 3.times { create(:rsvp, event: @event, taing: true) }
- 2.times { create(:rsvp, event: @event, teaching: true, taing: true) }
- 1.times { create(:rsvp, event: @event) }
-
- volunteer = create(:user)
- create(:rsvp, user: volunteer, event: @event, teaching: true)
-
- visit event_path(@event)
- page.should have_content(volunteer.email)
- page.should have_content(volunteer.full_name)
- page.should have_content("#{volunteer.full_name} - #{volunteer.email}")
-
- page.should have_content("Willing to Teach: 5")
- page.should have_content("Willing to TA: 3")
- page.should have_content("Willing to Teach or TA: 2")
- page.should have_content("Not Interested in Teaching: 1")
- page.should have_content("All Volunteers: 11")
-
- page.should have_css('.teach', count: 5)
- page.should have_css('.ta', count: 3)
- page.should have_css('.both', count: 2)
- page.should have_css('.none', count: 1)
- end
-
- it "lets the user check in volunteers", js: true do
- user1 = create(:user, first_name: 'Anthony')
- user2 = create(:user, first_name: 'Bapp')
-
- session1 = @event.event_sessions.first
- session1.update_attribute(:name, 'Installfest')
- session2 = create(:event_session, event: @event, name: 'Curriculum')
-
- rsvp1 = create(:rsvp, user: user1, event: @event)
- rsvp2 = create(:rsvp, user: user2, event: @event)
-
- rsvp_session1 = create(:rsvp_session, rsvp: rsvp1, event_session: session1)
- rsvp_session2 = create(:rsvp_session, rsvp: rsvp2, event_session: session1)
-
- visit event_path(@event)
- page.should have_content("Check in for Installfest")
- page.should have_content("Check in for Curriculum")
-
- click_link("Check in for Installfest")
- page.should have_content(user1.first_name)
-
- within "#edit_rsvp_session_#{rsvp_session1.id}" do
- click_on 'Check In'
- page.should have_content('Checked In!')
- end
-
- rsvp_session1.reload.should be_checked_in
- rsvp_session2.reload.should_not be_checked_in
-
- within "#edit_rsvp_session_#{rsvp_session2.id}" do
- click_on 'Check In'
- page.should have_content('Checked In!')
- end
-
- rsvp_session1.reload.should be_checked_in
- rsvp_session2.reload.should be_checked_in
-
- visit event_event_session_checkins_path(@event, session1)
-
- within "#edit_rsvp_session_#{rsvp_session1.id}" do
- page.should have_content 'Checked In'
- end
- within "#edit_rsvp_session_#{rsvp_session2.id}" do
- page.should have_content 'Checked In'
- end
- end
- end
-
- context "user is logged in and is an admin" do
- before do
- sign_in_as(create(:user, admin: true))
- visit event_path(@event)
- end
-
- it "lets the user manage organizers" do
- click_link "Manage Organizers"
- page.should have_content("Organizer Assignment")
- end
-
- it "lets the user edit the event" do
- click_link "Edit"
- fill_in "Title", with: "New totally awesome event"
- click_button "Update Event"
-
- visit event_path(@event)
- page.should have_content "New totally awesome event"
- end
-
- it "shows all volunteer information" do
- 4.times { create(:rsvp, event: @event, teaching: true) }
- 3.times { create(:rsvp, event: @event, taing: true) }
- 2.times { create(:rsvp, event: @event, teaching: true, taing: true) }
- 1.times { create(:rsvp, event: @event) }
-
- volunteer = create(:user)
- create(:rsvp, user: volunteer, event: @event, teaching: true)
-
- visit event_path(@event)
- page.should have_content(volunteer.email)
- page.should have_content(volunteer.full_name)
- page.should have_content("#{volunteer.full_name} - #{volunteer.email}")
-
- page.should have_content("Willing to Teach: 5")
- page.should have_content("Willing to TA: 3")
- page.should have_content("Willing to Teach or TA: 2")
- page.should have_content("Not Interested in Teaching: 1")
- page.should have_content("All Volunteers: 11")
-
- page.should have_css('.teach', count: 5)
- page.should have_css('.ta', count: 3)
- page.should have_css('.both', count: 2)
- page.should have_css('.none', count: 1)
- end
end
end
|