diff --git a/app/models/favorite_group.rb b/app/models/favorite_group.rb index f914ac9a9..fceec52f1 100644 --- a/app/models/favorite_group.rb +++ b/app/models/favorite_group.rb @@ -120,7 +120,7 @@ class FavoriteGroup < ActiveRecord::Base end def initialize_creator - self.creator_id = CurrentUser.id + self.creator_id ||= CurrentUser.id end def strip_name @@ -214,6 +214,7 @@ class FavoriteGroup < ActiveRecord::Base super @neighbor_posts = nil clear_post_id_array + self end def last_page diff --git a/test/factories/favorite_group.rb b/test/factories/favorite_group.rb index 0d7ffd435..b789bc2a6 100644 --- a/test/factories/favorite_group.rb +++ b/test/factories/favorite_group.rb @@ -1,4 +1,6 @@ FactoryGirl.define do - factory(:favorite_group) do + factory :favorite_group do + name { FFaker::Lorem.word } + creator end end diff --git a/test/factories/user.rb b/test/factories/user.rb index 5b8d5059b..061facb03 100644 --- a/test/factories/user.rb +++ b/test/factories/user.rb @@ -1,5 +1,5 @@ FactoryGirl.define do - factory(:user) do + factory(:user, aliases: [:creator, :updater]) do name {(rand(1_000_000) + 10).to_s} password "password" password_hash {User.sha1("password")} diff --git a/test/functional/favorite_groups_controller_test.rb b/test/functional/favorite_groups_controller_test.rb new file mode 100644 index 000000000..780ca09ea --- /dev/null +++ b/test/functional/favorite_groups_controller_test.rb @@ -0,0 +1,81 @@ +require 'test_helper' + +class FavoriteGroupsControllerTest < ActionController::TestCase + context "The favorite groups controller" do + setup do + @user = FactoryGirl.create(:user) + CurrentUser.user = @user + CurrentUser.ip_addr = "127.0.0.1" + end + + context "index action" do + should "render" do + get :index + assert_response :success + end + end + + context "show action" do + should "render" do + favgroup = FactoryGirl.create(:favorite_group) + + get :show, { id: favgroup.id } + assert_response :success + end + end + + context "new action" do + should "render" do + get :new, {}, { user_id: @user.id } + assert_response :success + end + end + + context "create action" do + should "render" do + post :create, { favorite_group: FactoryGirl.attributes_for(:favorite_group) }, { user_id: @user.id } + assert_redirected_to favorite_groups_path + end + end + + context "edit action" do + should "render" do + favgroup = FactoryGirl.create(:favorite_group, creator: @user) + + get :edit, { id: favgroup.id }, { user_id: @user.id } + assert_response :success + end + end + + context "update action" do + should "render" do + favgroup = FactoryGirl.create(:favorite_group, creator: @user) + params = { id: favgroup.id, favorite_group: { name: "foo" } } + + put :update, params, { user_id: @user.id } + assert_redirected_to favgroup + assert_equal("foo", favgroup.reload.name) + end + end + + context "destroy action" do + should "render" do + favgroup = FactoryGirl.create(:favorite_group, creator: @user) + + delete :destroy, { id: favgroup.id }, { user_id: @user.id } + assert_redirected_to favorite_groups_path + end + end + + context "add_post action" do + should "render" do + favgroup = FactoryGirl.create(:favorite_group, creator: @user) + post = FactoryGirl.create(:post) + + put :add_post, { id: favgroup.id, post_id: post.id, format: "js" }, { user_id: @user.id } + assert_response :success + assert_equal([post.id], favgroup.reload.post_id_array) + end + end + end +end