Blob of spec/models/merge_request_spec.rb (raw blob data)

1 require File.dirname(__FILE__) + '/../spec_helper'
2
3 describe MergeRequest do
4 before(:each) do
5 @merge_request = merge_requests(:moes_to_johans)
6 end
7
8 it "should have valid associations" do
9 @merge_request.should have_valid_associations
10 end
11
12 it "requires a user to be valid" do
13 @merge_request.user = nil
14 @merge_request.should have(1).error_on(:user)
15 end
16
17 it "requires a source_repository to be valid" do
18 @merge_request.source_repository = nil
19 @merge_request.should have(1).error_on(:source_repository)
20 end
21
22 it "requires a target_repository to be valid" do
23 @merge_request.target_repository = nil
24 @merge_request.should have(1).error_on(:target_repository)
25 end
26
27 it "emails the owner of the target_repository on create" do
28 Mailer.deliveries = []
29 mr = @merge_request.clone
30 mr.save
31 Mailer.deliveries.should_not be_empty
32 end
33
34 it "has a merged? status" do
35 @merge_request.status = MergeRequest::STATUS_MERGED
36 @merge_request.merged?.should == true
37 end
38
39 it "has a rejected? status" do
40 @merge_request.status = MergeRequest::STATUS_REJECTED
41 @merge_request.rejected?.should == true
42 end
43
44 it "has a open? status" do
45 @merge_request.status = MergeRequest::STATUS_OPEN
46 @merge_request.open?.should == true
47 end
48
49 it "has a statuses class method" do
50 MergeRequest.statuses["Open"].should == MergeRequest::STATUS_OPEN
51 MergeRequest.statuses["Merged"].should == MergeRequest::STATUS_MERGED
52 MergeRequest.statuses["Rejected"].should == MergeRequest::STATUS_REJECTED
53 end
54
55 it "has a status_string" do
56 MergeRequest.statuses.each do |k,v|
57 @merge_request.status = v
58 @merge_request.status_string.should == k.downcase
59 end
60 end
61
62 it "knows who can resolve itself" do
63 @merge_request.resolvable_by?(users(:johan)).should == true # owns the mainline repos
64 @merge_request.resolvable_by?(users(:moe)).should == false
65 end
66
67 it "counts open merge_requests" do
68 mr = @merge_request.clone
69 mr.status = MergeRequest::STATUS_REJECTED
70 mr.save
71 MergeRequest.count_open.should == 1
72 end
73
74 it "it defaults to master for the source_branch" do
75 mr = MergeRequest.new
76 mr.source_branch.should == "master"
77 mr.source_branch = "foo"
78 mr.source_branch.should == "foo"
79 end
80
81 it "it defaults to master for the target_branch" do
82 mr = MergeRequest.new
83 mr.target_branch.should == "master"
84 mr.target_branch = "foo"
85 mr.target_branch.should == "foo"
86 end
87
88 it "has a source_name" do
89 @merge_request.source_branch = "foo"
90 @merge_request.source_name.should == "#{@merge_request.source_repository.name}:foo"
91 end
92
93 it "has a target_name" do
94 @merge_request.target_branch = "foo"
95 @merge_request.target_name.should == "#{@merge_request.target_repository.name}:foo"
96 end
97 end