Move mechanics of changeset subscriptions into the model
This commit is contained in:
parent
f5aa031b58
commit
8e21e4e801
3 changed files with 30 additions and 5 deletions
|
@ -44,7 +44,7 @@ module Api
|
||||||
cs.save_with_tags!
|
cs.save_with_tags!
|
||||||
|
|
||||||
# Subscribe user to changeset comments
|
# Subscribe user to changeset comments
|
||||||
cs.subscribers << current_user
|
cs.subscribe(current_user)
|
||||||
|
|
||||||
render :plain => cs.id.to_s
|
render :plain => cs.id.to_s
|
||||||
end
|
end
|
||||||
|
@ -233,10 +233,10 @@ module Api
|
||||||
|
|
||||||
# Find the changeset and check it is valid
|
# Find the changeset and check it is valid
|
||||||
changeset = Changeset.find(id)
|
changeset = Changeset.find(id)
|
||||||
raise OSM::APIChangesetAlreadySubscribedError, changeset if changeset.subscribers.exists?(current_user.id)
|
raise OSM::APIChangesetAlreadySubscribedError, changeset if changeset.subscribed?(current_user)
|
||||||
|
|
||||||
# Add the subscriber
|
# Add the subscriber
|
||||||
changeset.subscribers << current_user
|
changeset.subscribe(current_user)
|
||||||
|
|
||||||
# Return a copy of the updated changeset
|
# Return a copy of the updated changeset
|
||||||
@changeset = changeset
|
@changeset = changeset
|
||||||
|
@ -259,10 +259,10 @@ module Api
|
||||||
|
|
||||||
# Find the changeset and check it is valid
|
# Find the changeset and check it is valid
|
||||||
changeset = Changeset.find(id)
|
changeset = Changeset.find(id)
|
||||||
raise OSM::APIChangesetNotSubscribedError, changeset unless changeset.subscribers.exists?(current_user.id)
|
raise OSM::APIChangesetNotSubscribedError, changeset unless changeset.subscribed?(current_user)
|
||||||
|
|
||||||
# Remove the subscriber
|
# Remove the subscriber
|
||||||
changeset.subscribers.delete(current_user)
|
changeset.unsubscribe(current_user)
|
||||||
|
|
||||||
# Return a copy of the updated changeset
|
# Return a copy of the updated changeset
|
||||||
@changeset = changeset
|
@changeset = changeset
|
||||||
|
|
|
@ -213,4 +213,16 @@ class Changeset < ApplicationRecord
|
||||||
|
|
||||||
save_with_tags!
|
save_with_tags!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def subscribe(user)
|
||||||
|
subscribers << user
|
||||||
|
end
|
||||||
|
|
||||||
|
def unsubscribe(user)
|
||||||
|
subscribers.delete(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
def subscribed?(user)
|
||||||
|
subscribers.exists?(user.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -71,4 +71,17 @@ class ChangesetTest < ActiveSupport::TestCase
|
||||||
Changeset.from_xml(xml, :create => true)
|
Changeset.from_xml(xml, :create => true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_subscription
|
||||||
|
changeset = create(:changeset)
|
||||||
|
user = create(:user)
|
||||||
|
|
||||||
|
assert_not changeset.subscribed?(user)
|
||||||
|
|
||||||
|
changeset.subscribe(user)
|
||||||
|
assert changeset.subscribed?(user)
|
||||||
|
|
||||||
|
changeset.unsubscribe(changeset.subscribers.first)
|
||||||
|
assert_not changeset.subscribed?(user)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue