diff --git a/app/models/project_hook.rb b/app/models/project_hook.rb index e1c9ed01bc5..4e9b22532cb 100644 --- a/app/models/project_hook.rb +++ b/app/models/project_hook.rb @@ -17,9 +17,10 @@ class ProjectHook < WebHook belongs_to :project - attr_accessible :push_events, :issues_events, :merge_requests_events + attr_accessible :push_events, :issues_events, :merge_requests_events, :tag_push_events scope :push_hooks, -> { where(push_events: true) } + scope :tag_push_hooks, -> { where(tag_push_events: true) } scope :issue_hooks, -> { where(issues_events: true) } scope :merge_request_hooks, -> { where(merge_requests_events: true) } end diff --git a/app/views/projects/hooks/index.html.haml b/app/views/projects/hooks/index.html.haml index 00e5ae27779..866fd6f6066 100644 --- a/app/views/projects/hooks/index.html.haml +++ b/app/views/projects/hooks/index.html.haml @@ -26,6 +26,13 @@ %strong Push events %p.light This url will be triggered by a push to the repository + %div + = f.check_box :tag_push_events, class: 'pull-left' + .prepend-left-20 + = f.label :tag_push_events, class: 'list-label' do + %strong Tag push events + %p.light + This url will be triggered when a new tag is pushed to the repository %div = f.check_box :issues_events, class: 'pull-left' .prepend-left-20 @@ -56,6 +63,6 @@ .clearfix %span.monospace= hook.url %p - - %w(push_events issues_events merge_requests_events).each do |trigger| + - %w(push_events tag_push_events issues_events merge_requests_events).each do |trigger| - if hook.send(trigger) %span.label.label-gray= trigger.titleize diff --git a/db/migrate/20140305193308_add_tag_push_hooks_to_project_hook.rb b/db/migrate/20140305193308_add_tag_push_hooks_to_project_hook.rb new file mode 100644 index 00000000000..7017148702a --- /dev/null +++ b/db/migrate/20140305193308_add_tag_push_hooks_to_project_hook.rb @@ -0,0 +1,5 @@ +class AddTagPushHooksToProjectHook < ActiveRecord::Migration + def change + add_column :web_hooks, :tag_push_events, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 9f1de4d2120..73abb1450b5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,15 +11,18 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140304005354) do +ActiveRecord::Schema.define(version: 20140305193308) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" create_table "broadcast_messages", force: true do |t| t.text "message", null: false t.datetime "starts_at" t.datetime "ends_at" t.integer "alert_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "color" t.string "font" end @@ -27,8 +30,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "deploy_keys_projects", force: true do |t| t.integer "deploy_key_id", null: false t.integer "project_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end add_index "deploy_keys_projects", ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree @@ -49,8 +52,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.string "title" t.text "data" t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "action" t.integer "author_id" end @@ -65,8 +68,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "forked_project_links", force: true do |t| t.integer "forked_to_project_id", null: false t.integer "forked_from_project_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end add_index "forked_project_links", ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true, using: :btree @@ -76,8 +79,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.integer "assignee_id" t.integer "author_id" t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "position", default: 0 t.string "branch_name" t.text "description" @@ -95,8 +98,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "keys", force: true do |t| t.integer "user_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.text "key" t.string "title" t.string "type" @@ -106,10 +109,10 @@ ActiveRecord::Schema.define(version: 20140304005354) do add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree create_table "merge_request_diffs", force: true do |t| - t.string "state", default: "collected", null: false - t.text "st_commits", limit: 2147483647 - t.text "st_diffs", limit: 2147483647 - t.integer "merge_request_id", null: false + t.string "state", default: "collected", null: false + t.text "st_commits" + t.text "st_diffs" + t.integer "merge_request_id", null: false t.datetime "created_at" t.datetime "updated_at" end @@ -123,8 +126,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.integer "author_id" t.integer "assignee_id" t.string "title" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "milestone_id" t.string "state" t.string "merge_status" @@ -138,7 +141,7 @@ ActiveRecord::Schema.define(version: 20140304005354) do add_index "merge_requests", ["created_at"], name: "index_merge_requests_on_created_at", using: :btree add_index "merge_requests", ["milestone_id"], name: "index_merge_requests_on_milestone_id", using: :btree add_index "merge_requests", ["source_branch"], name: "index_merge_requests_on_source_branch", using: :btree - add_index "merge_requests", ["source_project_id"], name: "index_merge_requests_on_project_id", using: :btree + add_index "merge_requests", ["source_project_id"], name: "index_merge_requests_on_source_project_id", using: :btree add_index "merge_requests", ["target_branch"], name: "index_merge_requests_on_target_branch", using: :btree add_index "merge_requests", ["title"], name: "index_merge_requests_on_title", using: :btree @@ -147,8 +150,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.integer "project_id", null: false t.text "description" t.date "due_date" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "state" t.integer "iid" end @@ -160,8 +163,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.string "name", null: false t.string "path", null: false t.integer "owner_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "type" t.string "description", default: "", null: false t.string "avatar" @@ -176,15 +179,15 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.text "note" t.string "noteable_type" t.integer "author_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_id" t.string "attachment" t.string "line_code" t.string "commit_id" t.integer "noteable_id" - t.text "st_diff" t.boolean "system", default: false, null: false + t.text "st_diff" end add_index "notes", ["author_id"], name: "index_notes_on_author_id", using: :btree @@ -199,8 +202,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.string "name" t.string "path" t.text "description" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "creator_id" t.boolean "issues_enabled", default: true, null: false t.boolean "wall_enabled", default: true, null: false @@ -217,15 +220,15 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.boolean "archived", default: false, null: false end - add_index "projects", ["creator_id"], name: "index_projects_on_owner_id", using: :btree + add_index "projects", ["creator_id"], name: "index_projects_on_creator_id", using: :btree add_index "projects", ["last_activity_at"], name: "index_projects_on_last_activity_at", using: :btree add_index "projects", ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree create_table "protected_branches", force: true do |t| t.integer "project_id", null: false t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" end add_index "protected_branches", ["project_id"], name: "index_protected_branches_on_project_id", using: :btree @@ -235,8 +238,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.string "title" t.string "token" t.integer "project_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "active", default: false, null: false t.string "project_url" t.string "subdomain" @@ -249,14 +252,14 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "snippets", force: true do |t| t.string "title" - t.text "content", limit: 2147483647 - t.integer "author_id", null: false + t.text "content" + t.integer "author_id", null: false t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "file_name" t.datetime "expires_at" - t.boolean "private", default: true, null: false + t.boolean "private", default: true, null: false t.string "type" end @@ -293,8 +296,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "name" t.boolean "admin", default: false, null: false t.integer "projects_limit", default: 10 @@ -338,8 +341,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do t.integer "group_access", null: false t.integer "group_id", null: false t.integer "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "notification_level", default: 3, null: false end @@ -348,8 +351,8 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "users_projects", force: true do |t| t.integer "user_id", null: false t.integer "project_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_access", default: 0, null: false t.integer "notification_level", default: 3, null: false end @@ -361,13 +364,14 @@ ActiveRecord::Schema.define(version: 20140304005354) do create_table "web_hooks", force: true do |t| t.string "url" t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at" + t.datetime "updated_at" t.string "type", default: "ProjectHook" t.integer "service_id" t.boolean "push_events", default: true, null: false t.boolean "issues_events", default: false, null: false t.boolean "merge_requests_events", default: false, null: false + t.boolean "tag_push_events", default: false end add_index "web_hooks", ["project_id"], name: "index_web_hooks_on_project_id", using: :btree diff --git a/spec/models/project_hook_spec.rb b/spec/models/project_hook_spec.rb new file mode 100644 index 00000000000..7bd7c431bcd --- /dev/null +++ b/spec/models/project_hook_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe ProjectHook do + describe '.push_hooks' do + it 'should return hooks for push events only' do + hook = create(:project_hook, push_events: true) + hook2 = create(:project_hook, push_events: false) + expect(ProjectHook.push_hooks).to eq([hook]) + end + end + + describe '.tag_push_hooks' do + it 'should return hooks for tag push events only' do + hook = create(:project_hook, tag_push_events: true) + hook2 = create(:project_hook, tag_push_events: false) + expect(ProjectHook.tag_push_hooks).to eq([hook]) + end + end +end