a896b0a9e6
Publishing or unpublishing a board didn't bust the `json.cache! board` fragment cache because `Board::Publication` didn't touch its parent board. The board's `updated_at` stayed stale, so subsequent GET requests continued serving cached JSON without `public_url`.
70 lines
1.8 KiB
Ruby
70 lines
1.8 KiB
Ruby
require "test_helper"
|
|
|
|
class Board::PublishableTest < ActiveSupport::TestCase
|
|
setup do
|
|
Current.session = sessions(:david)
|
|
end
|
|
|
|
test "published scope" do
|
|
boards(:writebook).publish
|
|
assert_includes Board.published, boards(:writebook)
|
|
assert_not_includes Board.published, boards(:private)
|
|
end
|
|
|
|
test "published?" do
|
|
assert_not boards(:writebook).published?
|
|
boards(:writebook).publish
|
|
assert boards(:writebook).published?
|
|
end
|
|
|
|
test "publish and unpublish" do
|
|
assert_not boards(:writebook).published?
|
|
|
|
assert_difference -> { Board::Publication.count }, +1 do
|
|
boards(:writebook).publish
|
|
end
|
|
|
|
assert boards(:writebook).published?
|
|
|
|
assert_difference -> { Board::Publication.count }, -1 do
|
|
boards(:writebook).unpublish
|
|
end
|
|
|
|
assert_not boards(:writebook).reload.published?
|
|
end
|
|
|
|
test "find board by publication key" do
|
|
boards(:writebook).publish
|
|
assert_equal boards(:writebook), Board.find_by_published_key(boards(:writebook).publication.key)
|
|
|
|
assert_raise ActiveRecord::RecordNotFound do
|
|
Board.find_by_published_key("invalid")
|
|
end
|
|
end
|
|
|
|
test "touch board when publication is created" do
|
|
assert_changes -> { boards(:writebook).reload.updated_at } do
|
|
boards(:writebook).publish
|
|
end
|
|
end
|
|
|
|
test "touch board when publication is destroyed" do
|
|
boards(:writebook).publish
|
|
|
|
assert_changes -> { boards(:writebook).reload.updated_at } do
|
|
boards(:writebook).unpublish
|
|
end
|
|
end
|
|
|
|
test "publish doesn't create duplicate publications" do
|
|
boards(:writebook).publish
|
|
original_publication = boards(:writebook).publication
|
|
|
|
assert_no_difference -> { Board::Publication.count } do
|
|
boards(:writebook).publish
|
|
end
|
|
|
|
assert_equal original_publication, boards(:writebook).reload.publication
|
|
end
|
|
end
|