Web hook messages should only be pushed once, not once for each hook
[gitorious:mainline.git] / test / unit / lib / push_spec_parser_test.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2011 Gitorious AS
4 #
5 #   This program is free software: you can redistribute it and/or modify
6 #   it under the terms of the GNU Affero General Public License as published by
7 #   the Free Software Foundation, either version 3 of the License, or
8 #   (at your option) any later version.
9 #
10 #   This program is distributed in the hope that it will be useful,
11 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #   GNU Affero General Public License for more details.
14 #
15 #   You should have received a copy of the GNU Affero General Public License
16 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #++
18
19 require "test_helper"
20 class PushSpecParserTest < ActiveSupport::TestCase
21
22   context "Actions" do
23     should "parse a tag creation" do
24       spec = PushSpecParser.new(NULL_SHA, OTHER_SHA, "refs/tags/topic")
25
26       assert spec.action_create?
27       assert !spec.action_update?
28       assert !spec.action_delete?
29     end
30
31     should "parse a tag update" do
32       spec = PushSpecParser.new(SHA, OTHER_SHA, "refs/tags/topic")
33
34       assert spec.action_update?
35       assert !spec.action_create?
36       assert !spec.action_delete?
37     end
38
39     should "parse a tag deletion" do
40       spec = PushSpecParser.new(SHA, NULL_SHA, "refs/tags/topic")
41
42       assert spec.action_delete?
43       assert !spec.action_create?
44       assert !spec.action_update?
45     end
46   end
47
48   context "Refs" do
49     should "recognize a tag" do
50       spec = PushSpecParser.new(nil, nil, "refs/tags/topic")
51
52       assert spec.tag?
53       assert !spec.head?
54       assert !spec.merge_request?
55     end
56
57     should "recognize a head" do
58       spec = PushSpecParser.new(nil, nil, "refs/heads/master")
59
60       assert spec.head?
61       assert !spec.tag?
62       assert !spec.merge_request?
63     end
64
65     should "recognize a merge request" do
66       spec = PushSpecParser.new(nil, nil, "refs/merge-requests/1")
67
68       assert spec.merge_request?
69       assert !spec.head?
70       assert !spec.tag?
71     end
72
73     should "recognize tag name" do
74       spec = PushSpecParser.new(nil, nil, "refs/tags/topic")
75
76       assert_equal "topic", spec.ref_name
77     end
78   end
79 end