From 11439c28515a706aa7ffa08c786687425e57b6ed Mon Sep 17 00:00:00 2001 From: Yongjie Lin Date: Fri, 3 Mar 2017 15:06:03 -0500 Subject: [PATCH 1/3] Implements hide unavailable button --- app/views/catalog/index.html.erb | 34 ++++++++++++++++++++++--- spec/features/reservations_spec.rb | 40 ++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/app/views/catalog/index.html.erb b/app/views/catalog/index.html.erb index d86bae6a7..1c5ec427a 100644 --- a/app/views/catalog/index.html.erb +++ b/app/views/catalog/index.html.erb @@ -5,18 +5,21 @@ <%= render partial: 'no_equipment' %> <% else %>
-
+
<%# for kaminari pagination %> <%= paginate @page_eq_models_by_category, params: { controller: 'catalog', action: 'index' } %> - <%= form_tag update_user_per_cat_page_path, + <%= form_tag update_user_per_cat_page_path, id: 'items_per_form', class: 'form-inline pull-right', remote: true, method: 'put' do %> <%= label_tag :items_per_page, 'Items per page:' %> <%= select_tag :items_per_page, options_for_select(@per_page_opts, session[:items_per_page]), class: 'autosubmitme form-control' %> - <% end %> + <% end %> +
+
+ <%= button_tag 'Hide unavailable', id: 'toggle_unavailable', class: 'btn btn-default'%>
@@ -31,3 +34,28 @@ <%= paginate @page_eq_models_by_category %> <% end %>
+ + diff --git a/spec/features/reservations_spec.rb b/spec/features/reservations_spec.rb index d4e9fbbf0..dcc4d14f3 100644 --- a/spec/features/reservations_spec.rb +++ b/spec/features/reservations_spec.rb @@ -836,4 +836,44 @@ expect(page).to have_content('Description') end end + + context 'when hide unavailable button is clicked' do + before do + empty_cart + @eq_model1 = FactoryGirl.create(:equipment_model, category: @category) + FactoryGirl.create(:equipment_item, equipment_model: @eq_model1) + + # update availability of eq_model1 to 0 without making a reservation + @temp = @eq_model1[:overdue_count] + @eq_model1[:overdue_count] = 1 + @eq_model1.save! + @eq_model1.reload + page.reset! + visit root_path + end + + after do + @eq_model1[:overdue_count] = @temp + @eq_model1.save! + @eq_model1.reload + page.reset! + end + + it 'shows all items by default' do + expect(page).to have_css(".availability-num", :text => 1, visible: true) + expect(page).to have_css(".availability-num", :text => 0, visible: true) + end + + it 'hides only unavailable items when clicked' do + click_button "toggle_unavailable" + expect(page).to have_css(".availability-num", :text => 1, visible: true) + expect(page).to have_css(".availability-num", :text => 0, visible: false) + end + + it 'reshows all items when clicked again' do + click_button "toggle_unavailable" + expect(page).to have_css(".availability-num", :text => 1, visible: true) + expect(page).to have_css(".availability-num", :text => 0, visible: true) + end + end end From 1bc27852efbbc5b3b351a4986df1a7706ab761d2 Mon Sep 17 00:00:00 2001 From: Yongjie Lin Date: Fri, 3 Mar 2017 15:29:42 -0500 Subject: [PATCH 2/3] Add class tags to avoid future jQuery collisions --- app/views/catalog/_catalog_listing.html.erb | 4 ++-- app/views/catalog/index.html.erb | 6 +++--- spec/features/reservations_spec.rb | 22 ++++++++++----------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/views/catalog/_catalog_listing.html.erb b/app/views/catalog/_catalog_listing.html.erb index 8480b200a..b4e584050 100644 --- a/app/views/catalog/_catalog_listing.html.erb +++ b/app/views/catalog/_catalog_listing.html.erb @@ -5,7 +5,7 @@
<% (equipment_models[0, 3]).each do |equipment_model| %> -
+
<%= render partial: 'catalog/equipment_model_div', locals: { equipment_model: equipment_model, availability_hash: availability_hash, @@ -15,4 +15,4 @@ <% end %>
<% end %> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/catalog/index.html.erb b/app/views/catalog/index.html.erb index 1c5ec427a..529ca0237 100644 --- a/app/views/catalog/index.html.erb +++ b/app/views/catalog/index.html.erb @@ -9,7 +9,7 @@ <%# for kaminari pagination %> <%= paginate @page_eq_models_by_category, params: { controller: 'catalog', action: 'index' } %> - <%= form_tag update_user_per_cat_page_path, + <%= form_tag update_user_per_cat_page_path, id: 'items_per_form', class: 'form-inline pull-right', remote: true, method: 'put' do %> <%= label_tag :items_per_page, 'Items per page:' %> @@ -51,8 +51,8 @@ $(document).ready(function() { } else { $("#toggle_unavailable").text("Hide unavailable"); } - $(".col-md-4").each(function() { - if ($(this).find(".col-md-3").text() <= 0) { + $(".eq-item").each(function() { + if ($(this).find(".availability-num").text() <= 0) { $(this).toggle(); } }); diff --git a/spec/features/reservations_spec.rb b/spec/features/reservations_spec.rb index dcc4d14f3..28a9c1213 100644 --- a/spec/features/reservations_spec.rb +++ b/spec/features/reservations_spec.rb @@ -851,29 +851,29 @@ page.reset! visit root_path end - + after do @eq_model1[:overdue_count] = @temp @eq_model1.save! @eq_model1.reload page.reset! end - + it 'shows all items by default' do - expect(page).to have_css(".availability-num", :text => 1, visible: true) - expect(page).to have_css(".availability-num", :text => 0, visible: true) + expect(page).to have_css('.availability-num', text: 1, visible: true) + expect(page).to have_css('.availability-num', text: 0, visible: true) end - + it 'hides only unavailable items when clicked' do - click_button "toggle_unavailable" - expect(page).to have_css(".availability-num", :text => 1, visible: true) - expect(page).to have_css(".availability-num", :text => 0, visible: false) + click_button 'toggle_unavailable' + expect(page).to have_css('.availability-num', text: 1, visible: true) + expect(page).to have_css('.availability-num', text: 0, visible: false) end it 'reshows all items when clicked again' do - click_button "toggle_unavailable" - expect(page).to have_css(".availability-num", :text => 1, visible: true) - expect(page).to have_css(".availability-num", :text => 0, visible: true) + click_button 'toggle_unavailable' + expect(page).to have_css('.availability-num', text: 1, visible: true) + expect(page).to have_css('.availability-num', text: 0, visible: true) end end end From 91aedd479b44c1c9ece6725c599cf08270bbd98b Mon Sep 17 00:00:00 2001 From: Yongjie Lin Date: Sat, 1 Apr 2017 17:22:18 -0400 Subject: [PATCH 3/3] Fix faulty tests --- spec/features/reservations_spec.rb | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/spec/features/reservations_spec.rb b/spec/features/reservations_spec.rb index 28a9c1213..7cf8012df 100644 --- a/spec/features/reservations_spec.rb +++ b/spec/features/reservations_spec.rb @@ -838,13 +838,11 @@ end context 'when hide unavailable button is clicked' do - before do + before(:each) do empty_cart + Capybara.ignore_hidden_elements = false @eq_model1 = FactoryGirl.create(:equipment_model, category: @category) FactoryGirl.create(:equipment_item, equipment_model: @eq_model1) - - # update availability of eq_model1 to 0 without making a reservation - @temp = @eq_model1[:overdue_count] @eq_model1[:overdue_count] = 1 @eq_model1.save! @eq_model1.reload @@ -852,10 +850,9 @@ visit root_path end - after do - @eq_model1[:overdue_count] = @temp - @eq_model1.save! - @eq_model1.reload + after(:each) do + Capybara.ignore_hidden_elements = true + @eq_model1.destroy page.reset! end @@ -872,8 +869,9 @@ it 'reshows all items when clicked again' do click_button 'toggle_unavailable' - expect(page).to have_css('.availability-num', text: 1, visible: true) - expect(page).to have_css('.availability-num', text: 0, visible: true) + click_button 'toggle_unavailable' + expect(page).to have_css('.availability-num', text: 1, visible: :true) + expect(page).to have_css('.availability-num', text: 0, visible: :true) end end end