forked from github/github-services
-
Notifications
You must be signed in to change notification settings - Fork 0
/
push_test.rb
142 lines (114 loc) · 3.49 KB
/
push_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
require File.expand_path('../helper', __FILE__)
class PushTest < Service::TestCase
include Service::PushHelpers
alias :base_payload :payload
attr_reader :payload
def setup
@payload = base_payload
end
def test_create_tag
no_distinct_commits!
payload.merge!(
'ref' => 'refs/tags/v1.2.3',
'created' => true
)
assert_equal true, tag?
assert_equal true, created?
assert_equal 'v1.2.3', tag_name
assert_equal '[grit] rtomayko tagged v1.2.3 at a47fd41', summary_message
assert_match '/commits/v1.2.3', summary_url
end
def test_create_tag_with_base
no_distinct_commits!
payload.merge!(
'ref' => 'refs/tags/v2.3.4',
'before' => '0'*40,
'base_ref' => 'refs/heads/master'
)
assert_equal true, created?
assert_equal '[grit] rtomayko tagged v2.3.4 at master', summary_message
end
def test_create_branch_with_commits
payload.merge!(
'ref' => 'refs/heads/new-feature',
'created' => true
)
assert_equal '[grit] rtomayko created new-feature (+3 new commits)', summary_message
assert_match '/compare/', summary_url
end
def test_create_branch_without_commits
no_distinct_commits!
payload.merge!(
'ref' => 'refs/heads/new-feature',
'created' => true
)
assert_equal '[grit] rtomayko created new-feature at a47fd41', summary_message
assert_match '/commits/new-feature', summary_url
end
def test_create_branch_from_base
one_distinct_commit!
payload.merge!(
'ref' => 'refs/heads/new-feature',
'base_ref' => 'refs/heads/master',
'created' => true
)
assert_equal '[grit] rtomayko created new-feature from master (+1 new commit)', summary_message
end
def test_force_push
payload.merge!(
'ref' => 'refs/heads/production',
'forced' => true,
'pusher' => {'name' => 'hubot'}
)
assert_equal '[grit] hubot force-pushed production from 4c8124f to a47fd41', summary_message
assert_match '/commits/production', summary_url
end
def test_delete_branch
payload.merge!(
'ref' => 'refs/heads/legacy-code',
'deleted' => true,
'after' => '0'*40
)
assert_equal '[grit] rtomayko deleted legacy-code at 4c8124f', summary_message
assert_match '/commit/4c8124f', summary_url
end
def test_merge_from_base
no_distinct_commits!
payload.merge!(
'base_ref' => 'refs/tags/refactor'
)
assert_equal '[grit] rtomayko merged refactor into master', summary_message
assert_match '/compare/', summary_url
end
def test_merge_without_base
no_distinct_commits!
assert_equal '[grit] rtomayko fast-forwarded master from 4c8124f to a47fd41', summary_message
assert_match '/compare/', summary_url
end
def test_push_multiple_commits
assert_equal '[grit] rtomayko pushed 3 new commits to master', summary_message
assert_match '/compare/', summary_url
end
def test_push_one_commit
one_distinct_commit!
payload.merge!(
'ref' => 'refs/heads/posix-spawn'
)
assert_equal '[grit] rtomayko pushed 1 new commit to posix-spawn', summary_message
assert_match '/commit/', summary_url
end
def test_push_without_commits
payload.merge!(
'commits' => []
)
assert_equal '[grit] rtomayko pushed nothing', summary_message
end
private
def no_distinct_commits!
payload['commits'].map{ |c| c['distinct'] = false }
end
def one_distinct_commit!
no_distinct_commits!
payload['commits'].first['distinct'] = true
end
end