Tag exclusively by title
This commit is contained in:
@@ -11,12 +11,12 @@ module Bubble::Taggable
|
||||
def toggle_tag(title)
|
||||
transaction do
|
||||
tag = find_or_create_tag_with_title(title)
|
||||
tagged_with?(tag) ? untag_with(tag) : tag_with(tag)
|
||||
tagged_with?(title) ? untagging(tag) : tagging(tag)
|
||||
end
|
||||
end
|
||||
|
||||
def tagged_with?(tag)
|
||||
tags.include? tag
|
||||
def tagged_with?(title)
|
||||
tags.exists?(title: title)
|
||||
end
|
||||
|
||||
private
|
||||
@@ -24,11 +24,15 @@ module Bubble::Taggable
|
||||
bucket.account.tags.find_or_create_by!(title: title)
|
||||
end
|
||||
|
||||
def tag_with(tag)
|
||||
def find_tag_by_title(title)
|
||||
bucket.account.tags.find_by(title: title)
|
||||
end
|
||||
|
||||
def tagging(tag)
|
||||
taggings.create tag: tag
|
||||
end
|
||||
|
||||
def untag_with(tag)
|
||||
def untagging(tag)
|
||||
taggings.destroy_by tag: tag
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,16 +10,16 @@ class Bubbles::TaggingsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "create" do
|
||||
assert_changes "bubbles(:logo).tagged_with?(tags(:mobile))", from: false, to: true do
|
||||
post bubble_taggings_url(bubbles(:logo)), params: { tag_id: tags(:mobile).id }, as: :turbo_stream
|
||||
test "toggle tag on" do
|
||||
assert_changes "bubbles(:logo).tagged_with?(tags(:mobile).title)", from: false, to: true do
|
||||
post bubble_taggings_url(bubbles(:logo)), params: { tag_title: tags(:mobile).title }, as: :turbo_stream
|
||||
end
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
assert_changes "bubbles(:logo).tagged_with?(tags(:web))", from: false, to: true do
|
||||
assert_changes "bubbles(:logo).tagged_with?(tags(:mobile))", from: true, to: false do
|
||||
post bubble_taggings_url(bubbles(:logo)), params: { tag_id: tags(:web).id }, as: :turbo_stream
|
||||
end
|
||||
test "toggle tag off" do
|
||||
assert_changes "bubbles(:logo).tagged_with?(tags(:web).title)", from: true, to: false do
|
||||
post bubble_taggings_url(bubbles(:logo)), params: { tag_title: tags(:web).title }, as: :turbo_stream
|
||||
end
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
@@ -45,8 +45,8 @@ class BubbleTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
test "tagged states" do
|
||||
assert bubbles(:logo).tagged_with?(tags(:web))
|
||||
assert_not bubbles(:logo).tagged_with?(tags(:mobile))
|
||||
assert bubbles(:logo).tagged_with?(tags(:web).title)
|
||||
assert_not bubbles(:logo).tagged_with?(tags(:mobile).title)
|
||||
end
|
||||
|
||||
test "tag toggling" do
|
||||
|
||||
Reference in New Issue
Block a user