Commit f53683e6 authored by Valeriy's avatar Valeriy

fix specs

parent 410d25c8
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :subscribable, polymorphic: true
validates :user_id,
uniqueness: { scope: [:subscribable_id, :subscribable_type]},
uniqueness: { scope: [:subscribable_id, :subscribable_type] },
presence: true
end
......@@ -151,6 +151,10 @@ class NotificationService
# Reject mutes users
recipients = reject_muted_users(recipients, note.project)
recipients = add_subscribed_users(recipients, note.noteable)
recipients = reject_unsubscribed_users(recipients, note.noteable)
# Reject author
recipients.delete(note.author)
......@@ -315,12 +319,26 @@ class NotificationService
end
def reject_unsubscribed_users(recipients, target)
return recipients unless target.respond_to? :subscriptions
recipients.reject do |user|
subscription = target.subscriptions.find_by_user_id(user.id)
subscription && !subscription.subscribed
end
end
def add_subscribed_users(recipients, target)
return recipients unless target.respond_to? :subscriptions
subscriptions = target.subscriptions
if subscriptions.any?
recipients + subscriptions.where("subscribed is true").map(&:user)
else
recipients
end
end
def new_resource_email(target, project, method)
recipients = build_recipients(target, project)
recipients.delete(target.author)
......@@ -368,21 +386,12 @@ class NotificationService
recipients = reject_muted_users(recipients, project)
recipients = reject_mention_users(recipients, project)
recipients = add_subscribed_users(recipients, project)
recipients = add_subscribed_users(recipients, target)
recipients = recipients.concat(project_watchers(project)).uniq
recipients = reject_unsubscribed_users(recipients, target)
recipients
end
def add_subscribed_users(recipients, target)
subscriptions = target.subscriptions
if subscriptions.any?
recipients.merge(subscriptions.where("subscribed is true").map(&:user))
else
recipients
end
end
def mailer
Notify.delay
end
......
......@@ -334,12 +334,12 @@ ActiveRecord::Schema.define(version: 20150313012111) do
t.string "import_url"
t.integer "visibility_level", default: 0, null: false
t.boolean "archived", default: false, null: false
t.string "avatar"
t.string "import_status"
t.float "repository_size", default: 0.0
t.integer "star_count", default: 0, null: false
t.string "import_type"
t.string "import_source"
t.string "avatar"
end
add_index "projects", ["created_at", "id"], name: "index_projects_on_created_at_and_id", using: :btree
......
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