From 5e08e4ec9fc26b13464df0095df6f13596393fe1 Mon Sep 17 00:00:00 2001 From: Fellipe Souto Sampaio Date: Fri, 20 Dec 2013 12:59:09 -0200 Subject: [PATCH] Helpers reading group --- app/controllers/readings_controller.rb | 2 +- app/helpers/reading_groups_helper.rb | 5 +++++ app/views/reading_groups/index.html.erb | 16 ++++++++++++++++ app/views/shared/_reading_groups_list.erb | 25 +++++++++++++++++++++++++ spec/helpers/reading_groups_helper_spec.rb | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 app/helpers/reading_groups_helper.rb create mode 100644 app/views/shared/_reading_groups_list.erb create mode 100644 spec/helpers/reading_groups_helper_spec.rb diff --git a/app/controllers/readings_controller.rb b/app/controllers/readings_controller.rb index a13d140..4facaea 100644 --- a/app/controllers/readings_controller.rb +++ b/app/controllers/readings_controller.rb @@ -1,7 +1,7 @@ include OwnershipAuthentication class ReadingsController < ApplicationController - before_action :authenticate_user!, except: [:show] + before_action :authenticate_user!, except: [:show, :index] # before_action :reading_group_owner?, except: [:show] end diff --git a/app/helpers/reading_groups_helper.rb b/app/helpers/reading_groups_helper.rb new file mode 100644 index 0000000..00f6e8c --- /dev/null +++ b/app/helpers/reading_groups_helper.rb @@ -0,0 +1,5 @@ +module ReadingGroupsHelper + def reading_groups_owner? reading_group_id + user_signed_in? && !current_user.reading_group_ownerships.find_by_reading_group_id(reading_group_id).nil? + end +end \ No newline at end of file diff --git a/app/views/reading_groups/index.html.erb b/app/views/reading_groups/index.html.erb index e69de29..cfc4c29 100644 --- a/app/views/reading_groups/index.html.erb +++ b/app/views/reading_groups/index.html.erb @@ -0,0 +1,16 @@ + + +<% if user_signed_in? %> +

+ <%= link_to 'New Reading Group', new_reading_group_path, class: 'btn btn-primary' %> +

+<%else%> +

+ + To create new reading groups you must be logged in page. +

+<% end %> + +<%= render partial: 'shared/reading_groups_list', locals: {reading_groups: @reading_groups} %> \ No newline at end of file diff --git a/app/views/shared/_reading_groups_list.erb b/app/views/shared/_reading_groups_list.erb new file mode 100644 index 0000000..fc8d564 --- /dev/null +++ b/app/views/shared/_reading_groups_list.erb @@ -0,0 +1,25 @@ + + + + + + + + + + + <% reading_groups.each do |reading_group| %> + <% p reading_group %> + + + + + + + <% end %> + +
NameDescription
<%= reading_group.name %><%= reading_group.description %><%= link_to 'Show', reading_group_path(reading_group.id), class: 'btn btn-info' %> + <% if reading_groups_owner? reading_group.id %> + <%= link_to 'Edit', edit_reading_group_path(reading_group.id), class: 'btn btn-info' %> + <% end %> +
\ No newline at end of file diff --git a/spec/helpers/reading_groups_helper_spec.rb b/spec/helpers/reading_groups_helper_spec.rb new file mode 100644 index 0000000..ae9c92c --- /dev/null +++ b/spec/helpers/reading_groups_helper_spec.rb @@ -0,0 +1,46 @@ +require 'spec_helper' + +describe ReadingGroupsHelper do + + describe 'reading_group_owner?' do + before :each do + @subject = FactoryGirl.build(:reading_group) + end + + context 'returns false if not logged in' do + before :each do + helper.expects(:user_signed_in?).returns(false) + end + it { helper.reading_groups_owner?(@subject.id).should be_false } + end + + context 'returns false if is not the owner' do + before :each do + helper.expects(:user_signed_in?).returns(true) + helper.expects(:current_user).returns(FactoryGirl.build(:user)) + + @ownerships = [] + @ownerships.expects(:find_by_reading_group_id).with(@subject.id).returns(nil) + + User.any_instance.expects(:reading_group_ownerships).returns(@ownerships) + end + + it { helper.reading_groups_owner?(@subject.id).should be_false } + end + + context 'returns true if user is the reading_group owner' do + before :each do + helper.expects(:user_signed_in?).returns(true) + helper.expects(:current_user).returns(FactoryGirl.build(:user)) + + @ownership = FactoryGirl.build(:reading_group_ownership) + @ownerships = [] + @ownerships.expects(:find_by_reading_group_id).with(@subject.id).returns(@ownership) + User.any_instance.expects(:reading_group_ownerships).returns(@ownerships) + end + + it { helper.reading_groups_owner?(@subject.id).should be_true } + end + end + +end \ No newline at end of file -- libgit2 0.21.2