Skip to content
Snippets Groups Projects
Verified Commit e21ca9f8 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Merge branch 'star' of https://github.com/cirosantilli/gitlabhq into cirosantilli-star


Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>

Conflicts:
	CHANGELOG
parents 4a1e98e4 e1d307bf
No related branches found
No related tags found
No related merge requests found
Loading
@@ -122,4 +122,12 @@ module SharedProject
Loading
@@ -122,4 +122,12 @@ module SharedProject
project ||= create :empty_project, :public, name: 'Community', namespace: user.namespace project ||= create :empty_project, :public, name: 'Community', namespace: user.namespace
project.team << [user, :master] project.team << [user, :master]
end end
# ----------------------------------------
# Empty projects
# ----------------------------------------
step 'public empty project "Empty Public Project"' do
create :empty_project, :public, name: "Empty Public Project"
end
end end
Loading
@@ -2,6 +2,7 @@ require('spec_helper')
Loading
@@ -2,6 +2,7 @@ require('spec_helper')
   
describe ProjectsController do describe ProjectsController do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:public_project) { create(:project, :public) }
let(:user) { create(:user) } let(:user) { create(:user) }
let(:jpg) { fixture_file_upload(Rails.root + 'spec/fixtures/rails_sample.jpg', 'image/jpg') } let(:jpg) { fixture_file_upload(Rails.root + 'spec/fixtures/rails_sample.jpg', 'image/jpg') }
let(:txt) { fixture_file_upload(Rails.root + 'spec/fixtures/doc_sample.txt', 'text/plain') } let(:txt) { fixture_file_upload(Rails.root + 'spec/fixtures/doc_sample.txt', 'text/plain') }
Loading
@@ -40,4 +41,22 @@ describe ProjectsController do
Loading
@@ -40,4 +41,22 @@ describe ProjectsController do
end end
end end
end end
describe "POST #toggle_star" do
it "toggles star if user is signed in" do
sign_in(user)
expect(user.starred?(public_project)).to be_false
post :toggle_star, id: public_project.to_param
expect(user.starred?(public_project)).to be_true
post :toggle_star, id: public_project.to_param
expect(user.starred?(public_project)).to be_false
end
it "does nothing if user is not signed in" do
post :toggle_star, id: public_project.to_param
expect(user.starred?(public_project)).to be_false
post :toggle_star, id: public_project.to_param
expect(user.starred?(public_project)).to be_false
end
end
end end
Loading
@@ -226,7 +226,7 @@ describe "Issues", feature: true do
Loading
@@ -226,7 +226,7 @@ describe "Issues", feature: true do
issue.save issue.save
end end
   
it 'shows assignee text' do it "shows assignee text", js: true do
logout logout
login_with guest login_with guest
   
Loading
@@ -262,7 +262,7 @@ describe "Issues", feature: true do
Loading
@@ -262,7 +262,7 @@ describe "Issues", feature: true do
issue.save issue.save
end end
   
it 'shows milestone text' do it "shows milestone text", js: true do
logout logout
login_with guest login_with guest
   
Loading
Loading
Loading
@@ -240,4 +240,73 @@ describe Project do
Loading
@@ -240,4 +240,73 @@ describe Project do
it { project.open_branches.map(&:name).should include('bootstrap') } it { project.open_branches.map(&:name).should include('bootstrap') }
it { project.open_branches.map(&:name).should_not include('master') } it { project.open_branches.map(&:name).should_not include('master') }
end end
describe '#star_count' do
it 'counts stars from multiple users' do
user1 = create :user
user2 = create :user
project = create :project, :public
expect(project.star_count).to eq(0)
user1.toggle_star(project)
expect(project.reload.star_count).to eq(1)
user2.toggle_star(project)
project.reload
expect(project.reload.star_count).to eq(2)
user1.toggle_star(project)
project.reload
expect(project.reload.star_count).to eq(1)
user2.toggle_star(project)
project.reload
expect(project.reload.star_count).to eq(0)
end
it 'counts stars on the right project' do
user = create :user
project1 = create :project, :public
project2 = create :project, :public
expect(project1.star_count).to eq(0)
expect(project2.star_count).to eq(0)
user.toggle_star(project1)
project1.reload
project2.reload
expect(project1.star_count).to eq(1)
expect(project2.star_count).to eq(0)
user.toggle_star(project1)
project1.reload
project2.reload
expect(project1.star_count).to eq(0)
expect(project2.star_count).to eq(0)
user.toggle_star(project2)
project1.reload
project2.reload
expect(project1.star_count).to eq(0)
expect(project2.star_count).to eq(1)
user.toggle_star(project2)
project1.reload
project2.reload
expect(project1.star_count).to eq(0)
expect(project2.star_count).to eq(0)
end
it 'is decremented when an upvoter account is deleted' do
user = create :user
project = create :project, :public
user.toggle_star(project)
project.reload
expect(project.star_count).to eq(1)
user.destroy
project.reload
expect(project.star_count).to eq(0)
end
end
end end
Loading
@@ -355,4 +355,44 @@ describe User do
Loading
@@ -355,4 +355,44 @@ describe User do
expect(user.short_website_url).to eq 'test.com' expect(user.short_website_url).to eq 'test.com'
end end
end end
describe "#starred?" do
it "determines if user starred a project" do
user = create :user
project1 = create :project, :public
project2 = create :project, :public
expect(user.starred?(project1)).to be_false
expect(user.starred?(project2)).to be_false
star1 = UsersStarProject.create!(project: project1, user: user)
expect(user.starred?(project1)).to be_true
expect(user.starred?(project2)).to be_false
star2 = UsersStarProject.create!(project: project2, user: user)
expect(user.starred?(project1)).to be_true
expect(user.starred?(project2)).to be_true
star1.destroy
expect(user.starred?(project1)).to be_false
expect(user.starred?(project2)).to be_true
star2.destroy
expect(user.starred?(project1)).to be_false
expect(user.starred?(project2)).to be_false
end
end
describe "#toggle_star" do
it "toggles stars" do
user = create :user
project = create :project, :public
expect(user.starred?(project)).to be_false
user.toggle_star(project)
expect(user.starred?(project)).to be_true
user.toggle_star(project)
expect(user.starred?(project)).to be_false
end
end
end end
Loading
@@ -19,7 +19,8 @@ module LoginHelpers
Loading
@@ -19,7 +19,8 @@ module LoginHelpers
Thread.current[:current_user] = user Thread.current[:current_user] = user
end end
   
# Requires Javascript driver.
def logout def logout
click_link "Logout" rescue nil page.find(:css, ".icon-signout").click
end end
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment