Commit 77d06454 authored by Robert Speicher's avatar Robert Speicher

Simple model spec changes made possible by new factories

parent 0bc90940
...@@ -19,11 +19,7 @@ describe Issue do ...@@ -19,11 +19,7 @@ describe Issue do
it { Issue.should respond_to :opened } it { Issue.should respond_to :opened }
end end
subject { Factory.create(:issue, subject { Factory.create(:issue) }
author: Factory(:user),
assignee: Factory(:user),
project: Factory.create(:project)) }
it { should be_valid }
describe '#is_being_reassigned?' do describe '#is_being_reassigned?' do
it 'returns true if the issue assignee has changed' do it 'returns true if the issue assignee has changed' do
...@@ -41,11 +37,7 @@ describe Issue do ...@@ -41,11 +37,7 @@ describe Issue do
subject.is_being_closed?.should be_true subject.is_being_closed?.should be_true
end end
it 'returns false if the closed attribute has changed and is now false' do it 'returns false if the closed attribute has changed and is now false' do
issue = Factory.create(:issue, issue = Factory.create(:closed_issue)
closed: true,
author: Factory(:user),
assignee: Factory(:user),
project: Factory.create(:project))
issue.closed = false issue.closed = false
issue.is_being_closed?.should be_false issue.is_being_closed?.should be_false
end end
...@@ -57,11 +49,7 @@ describe Issue do ...@@ -57,11 +49,7 @@ describe Issue do
describe '#is_being_reopened?' do describe '#is_being_reopened?' do
it 'returns true if the closed attribute has changed and is now false' do it 'returns true if the closed attribute has changed and is now false' do
issue = Factory.create(:issue, issue = Factory.create(:closed_issue)
closed: true,
author: Factory(:user),
assignee: Factory(:user),
project: Factory.create(:project))
issue.closed = false issue.closed = false
issue.is_being_reopened?.should be_true issue.is_being_reopened?.should be_true
end end
...@@ -75,40 +63,33 @@ describe Issue do ...@@ -75,40 +63,33 @@ describe Issue do
end end
describe "plus 1" do describe "plus 1" do
let(:project) { Factory(:project) } subject { Factory.create(:issue) }
subject {
Factory.create(:issue,
author: Factory(:user),
assignee: Factory(:user),
project: project)
}
it "with no notes has a 0/0 score" do it "with no notes has a 0/0 score" do
subject.upvotes.should == 0 subject.upvotes.should == 0
end end
it "should recognize non-+1 notes" do it "should recognize non-+1 notes" do
subject.notes << Factory(:note, note: "No +1 here", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "No +1 here")
subject.should have(1).note subject.should have(1).note
subject.notes.first.upvote?.should be_false subject.notes.first.upvote?.should be_false
subject.upvotes.should == 0 subject.upvotes.should == 0
end end
it "should recognize a single +1 note" do it "should recognize a single +1 note" do
subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "+1 This is awesome")
subject.upvotes.should == 1 subject.upvotes.should == 1
end end
it "should recognize a multiple +1 notes" do it "should recognize a multiple +1 notes" do
subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "+1 This is awesome")
subject.notes << Factory(:note, note: "+1 I want this", project: Factory(:project, path: 'plustwo', code: 'plustwo')) subject.notes << Factory(:note, note: "+1 I want this")
subject.upvotes.should == 2 subject.upvotes.should == 2
end end
end end
describe ".search" do describe ".search" do
let!(:issue) { Factory.create(:issue, title: "Searchable issue", let!(:issue) { Factory.create(:issue, title: "Searchable issue") }
project: Factory.create(:project)) }
it "matches by title" do it "matches by title" do
Issue.search('able').all.should == [issue] Issue.search('able').all.should == [issue]
......
...@@ -17,20 +17,15 @@ describe Key do ...@@ -17,20 +17,15 @@ describe Key do
context "validation of uniqueness" do context "validation of uniqueness" do
context "as a deploy key" do context "as a deploy key" do
let(:project) { Factory.create(:project, path: 'alpha', code: 'alpha') } let!(:deploy_key) { create(:deploy_key) }
let(:another_project) { Factory.create(:project, path: 'beta', code: 'beta') }
before do
deploy_key = Factory.create(:key, project: project)
end
it "does not accept the same key twice for a project" do it "does not accept the same key twice for a project" do
key = Factory.new(:key, project: project) key = build(:key, project: deploy_key.project)
key.should_not be_valid key.should_not be_valid
end end
it "does accept the same key for another project" do it "does accept the same key for another project" do
key = Factory.new(:key, project: another_project) key = build(:key, project_id: 0)
key.should be_valid key.should be_valid
end end
end end
...@@ -39,12 +34,12 @@ describe Key do ...@@ -39,12 +34,12 @@ describe Key do
let(:user) { Factory.create(:user) } let(:user) { Factory.create(:user) }
it "accepts the key once" do it "accepts the key once" do
Factory.new(:key, user: user).should be_valid build(:key, user: user).should be_valid
end end
it "does not accepts the key twice" do it "does not accepts the key twice" do
Factory.create(:key, user: user) create(:key, user: user)
Factory.new(:key, user: user).should_not be_valid build(:key, user: user).should_not be_valid
end end
end end
end end
......
...@@ -20,46 +20,34 @@ describe MergeRequest do ...@@ -20,46 +20,34 @@ describe MergeRequest do
it { MergeRequest.should respond_to :opened } it { MergeRequest.should respond_to :opened }
end end
it { Factory.create(:merge_request,
author: Factory(:user),
assignee: Factory(:user),
project: Factory.create(:project)).should be_valid }
describe "plus 1" do describe "plus 1" do
let(:project) { Factory(:project) } subject { Factory.create(:merge_request) }
subject {
Factory.create(:merge_request,
author: Factory(:user),
assignee: Factory(:user),
project: project)
}
it "with no notes has a 0/0 score" do it "with no notes has a 0/0 score" do
subject.upvotes.should == 0 subject.upvotes.should == 0
end end
it "should recognize non-+1 notes" do it "should recognize non-+1 notes" do
subject.notes << Factory(:note, note: "No +1 here", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "No +1 here")
subject.should have(1).note subject.should have(1).note
subject.notes.first.upvote?.should be_false subject.notes.first.upvote?.should be_false
subject.upvotes.should == 0 subject.upvotes.should == 0
end end
it "should recognize a single +1 note" do it "should recognize a single +1 note" do
subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "+1 This is awesome")
subject.upvotes.should == 1 subject.upvotes.should == 1
end end
it "should recognize a multiple +1 notes" do it "should recognize a multiple +1 notes" do
subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone')) subject.notes << Factory(:note, note: "+1 This is awesome")
subject.notes << Factory(:note, note: "+1 I want this", project: Factory(:project, path: 'plustwo', code: 'plustwo')) subject.notes << Factory(:note, note: "+1 I want this")
subject.upvotes.should == 2 subject.upvotes.should == 2
end end
end end
describe ".search" do describe ".search" do
let!(:issue) { Factory.create(:issue, title: "Searchable issue", let!(:issue) { Factory.create(:issue, title: "Searchable issue") }
project: Factory.create(:project)) }
it "matches by title" do it "matches by title" do
Issue.search('able').all.should == [issue] Issue.search('able').all.should == [issue]
......
...@@ -25,11 +25,8 @@ describe Milestone do ...@@ -25,11 +25,8 @@ describe Milestone do
it { should validate_presence_of(:project_id) } it { should validate_presence_of(:project_id) }
end end
let(:project) { Factory :project } let(:milestone) { Factory :milestone }
let(:milestone) { Factory :milestone, project: project } let(:issue) { Factory :issue }
let(:issue) { Factory :issue, project: project }
it { milestone.should be_valid }
describe "#percent_complete" do describe "#percent_complete" do
it "should not count open issues" do it "should not count open issues" do
......
require 'spec_helper' require 'spec_helper'
describe Note do describe Note do
let(:project) { Factory :project }
let!(:commit) { project.commit }
describe "Associations" do describe "Associations" do
it { should belong_to(:project) } it { should belong_to(:project) }
end end
...@@ -13,8 +10,6 @@ describe Note do ...@@ -13,8 +10,6 @@ describe Note do
it { should validate_presence_of(:project) } it { should validate_presence_of(:project) }
end end
it { Factory.create(:note,
project: project).should be_valid }
describe "Scopes" do describe "Scopes" do
it "should have a today named scope that returns ..." do it "should have a today named scope that returns ..." do
Note.today.where_values.should == ["created_at >= '#{Date.today}'"] Note.today.where_values.should == ["created_at >= '#{Date.today}'"]
...@@ -25,26 +20,27 @@ describe Note do ...@@ -25,26 +20,27 @@ describe Note do
let(:project) { Factory(:project) } let(:project) { Factory(:project) }
it "recognizes a neutral note" do it "recognizes a neutral note" do
note = Factory(:note, project: project, note: "This is not a +1 note") note = Factory(:note, note: "This is not a +1 note")
note.should_not be_upvote note.should_not be_upvote
end end
it "recognizes a +1 note" do it "recognizes a +1 note" do
note = Factory(:note, project: project, note: "+1 for this") note = Factory(:note, note: "+1 for this")
note.should be_upvote note.should be_upvote
end end
it "recognizes a -1 note as no vote" do it "recognizes a -1 note as no vote" do
note = Factory(:note, project: project, note: "-1 for this") note = Factory(:note, note: "-1 for this")
note.should_not be_upvote note.should_not be_upvote
end end
end end
describe "Commit notes" do let(:project) { create(:project) }
let(:commit) { project.commit }
describe "Commit notes" do
before do before do
@note = Factory :note, @note = Factory :note,
project: project,
noteable_id: commit.id, noteable_id: commit.id,
noteable_type: "Commit" noteable_type: "Commit"
end end
...@@ -58,7 +54,6 @@ describe Note do ...@@ -58,7 +54,6 @@ describe Note do
describe "Pre-line commit notes" do describe "Pre-line commit notes" do
before do before do
@note = Factory :note, @note = Factory :note,
project: project,
noteable_id: commit.id, noteable_id: commit.id,
noteable_type: "Commit", noteable_type: "Commit",
line_code: "0_16_1" line_code: "0_16_1"
...@@ -91,8 +86,8 @@ describe Note do ...@@ -91,8 +86,8 @@ describe Note do
describe :authorization do describe :authorization do
before do before do
@p1 = project @p1 = create(:project)
@p2 = Factory :project, code: "alien", path: "gitlabhq_1" @p2 = Factory :project
@u1 = Factory :user @u1 = Factory :user
@u2 = Factory :user @u2 = Factory :user
@u3 = Factory :user @u3 = Factory :user
......
...@@ -3,11 +3,12 @@ require 'spec_helper' ...@@ -3,11 +3,12 @@ require 'spec_helper'
describe User do describe User do
describe "Associations" do describe "Associations" do
it { should have_many(:projects) } it { should have_many(:projects) }
it { should have_many(:users_projects) } it { should have_many(:users_projects).dependent(:destroy) }
it { should have_many(:issues) } it { should have_many(:issues).dependent(:destroy) }
it { should have_many(:assigned_issues) } it { should have_many(:assigned_issues).dependent(:destroy) }
it { should have_many(:merge_requests) } it { should have_many(:merge_requests).dependent(:destroy) }
it { should have_many(:assigned_merge_requests) } it { should have_many(:assigned_merge_requests).dependent(:destroy) }
it { should have_many(:notes).dependent(:destroy) }
end end
describe "Respond to" do describe "Respond to" do
...@@ -49,21 +50,6 @@ describe User do ...@@ -49,21 +50,6 @@ describe User do
user = Factory(:user) user = Factory(:user)
user.authentication_token.should_not == "" user.authentication_token.should_not == ""
end end
describe "dependent" do
before do
@user = Factory :user
@note = Factory :note,
author: @user,
project: Factory(:project)
end
it "should destroy all notes with user" do
Note.find_by_id(@note.id).should_not be_nil
@user.destroy
Note.find_by_id(@note.id).should be_nil
end
end
end end
# == Schema Information # == Schema Information
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment