Merge remote-tracking branch 'upstream/pull/5744'
This commit is contained in:
commit
a176160287
9 changed files with 37 additions and 39 deletions
|
@ -92,23 +92,10 @@ class Note < ApplicationRecord
|
|||
closed_at + DEFAULT_FRESHLY_CLOSED_LIMIT
|
||||
end
|
||||
|
||||
# Return the note's description, derived from the first comment
|
||||
# Return the note's description
|
||||
def description
|
||||
if user_ip.nil? && user_id.nil?
|
||||
all_comments.first.body if all_comments.first&.event == "opened"
|
||||
else
|
||||
RichText.new("text", super)
|
||||
end
|
||||
end
|
||||
|
||||
# Return the note's author object, derived from the first comment
|
||||
def author
|
||||
if user_ip.nil? && user_id.nil?
|
||||
all_comments.first.author if all_comments.first&.event == "opened"
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
|
|
@ -338,7 +338,7 @@ module Api
|
|||
second_user = create(:user)
|
||||
third_user = create(:user)
|
||||
|
||||
note_with_comments_by_users = create(:note) do |note|
|
||||
note_with_comments_by_users = create(:note, :author => first_user) do |note|
|
||||
create(:note_comment, :note => note, :author => first_user)
|
||||
create(:note_comment, :note => note, :author => second_user)
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@ FactoryBot.define do
|
|||
factory :note_comment do
|
||||
sequence(:body) { |n| "This is note comment #{n}" }
|
||||
visible { true }
|
||||
event { "opened" }
|
||||
event { "commented" }
|
||||
note
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@ FactoryBot.define do
|
|||
factory :note do
|
||||
latitude { 1 * GeoRecord::SCALE }
|
||||
longitude { 1 * GeoRecord::SCALE }
|
||||
# tile { QuadTile.tile_for_point(1,1) }
|
||||
description { "Default note's description" }
|
||||
|
||||
trait :closed do
|
||||
transient do
|
||||
|
@ -23,7 +23,8 @@ FactoryBot.define do
|
|||
end
|
||||
|
||||
after(:create) do |note, evaluator|
|
||||
create_list(:note_comment, evaluator.comments_count, :note => note)
|
||||
create(:note_comment, :event => "opened", :note => note)
|
||||
create_list(:note_comment, evaluator.comments_count - 1, :note => note)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,8 +12,8 @@ class IssueTest < ActiveSupport::TestCase
|
|||
def test_reported_user
|
||||
create(:language, :code => "en")
|
||||
user = create(:user)
|
||||
note = create(:note_comment, :author => create(:user)).note
|
||||
anonymous_note = create(:note_comment, :author => nil).note
|
||||
note = create(:note, :author => create(:user))
|
||||
anonymous_note = create(:note, :author => nil)
|
||||
diary_entry = create(:diary_entry)
|
||||
diary_comment = create(:diary_comment, :diary_entry => diary_entry)
|
||||
|
||||
|
|
|
@ -48,20 +48,29 @@ class NoteTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
def test_description
|
||||
comment = create(:note_comment)
|
||||
assert_equal comment.body, comment.note.description
|
||||
note = create(:note)
|
||||
assert_equal "Default note's description", note.description
|
||||
|
||||
user = create(:user)
|
||||
comment = create(:note_comment, :author => user)
|
||||
assert_equal comment.body, comment.note.description
|
||||
note = create(:note, :description => "Test description #1")
|
||||
assert_equal "Test description #1", note.description
|
||||
|
||||
comment = create(:note_comment)
|
||||
assert_equal "Default note's description", comment.note.description
|
||||
|
||||
comment = create(:note_comment, :note => build(:note, :description => "Test description #2"))
|
||||
assert_equal "Test description #2", comment.note.description
|
||||
end
|
||||
|
||||
def test_author
|
||||
user = create(:user)
|
||||
|
||||
note = create(:note, :author => user)
|
||||
assert_equal user, note.author
|
||||
|
||||
comment = create(:note_comment)
|
||||
assert_nil comment.note.author
|
||||
|
||||
user = create(:user)
|
||||
comment = create(:note_comment, :author => user)
|
||||
comment = create(:note_comment, :author => user, :note => build(:note, :author => user))
|
||||
assert_equal user, comment.note.author
|
||||
end
|
||||
|
||||
|
|
|
@ -56,20 +56,20 @@ class IndexTest < ApplicationSystemTestCase
|
|||
|
||||
test "can navigate from hidden note to visible note" do
|
||||
sign_in_as(create(:moderator_user))
|
||||
hidden_note = create(:note, :status => "hidden")
|
||||
create(:note_comment, :note => hidden_note, :body => "this-is-a-hidden-note")
|
||||
hidden_note = create(:note, :status => "hidden", :description => "Hidden Note Description")
|
||||
create(:note_comment, :note => hidden_note, :body => "this-is-a-hidden-note", :event => "opened")
|
||||
position = (1.003 * GeoRecord::SCALE).to_i
|
||||
visible_note = create(:note, :latitude => position, :longitude => position)
|
||||
create(:note_comment, :note => visible_note, :body => "this-is-a-visible-note")
|
||||
visible_note = create(:note, :latitude => position, :longitude => position, :description => "Visible Note Description")
|
||||
create(:note_comment, :note => visible_note, :body => "this-is-a-visible-note", :event => "opened")
|
||||
|
||||
visit root_path(:anchor => "map=15/1/1") # view place of hidden note in case it is not rendered during note_path(hidden_note)
|
||||
visit note_path(hidden_note)
|
||||
find(".leaflet-control.control-layers .control-button").click
|
||||
find("#map-ui .overlay-layers .form-check-label", :text => "Map Notes").click
|
||||
visible_note_marker = find(".leaflet-marker-icon[title=this-is-a-visible-note]")
|
||||
assert_selector "#sidebar", :text => "this-is-a-hidden-note"
|
||||
assert_selector "#sidebar", :text => "Hidden Note Description"
|
||||
|
||||
visible_note_marker.click
|
||||
assert_selector "#sidebar", :text => "this-is-a-visible-note"
|
||||
assert_selector "#sidebar", :text => "Visible Note Description"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ class NoteLayerTest < ApplicationSystemTestCase
|
|||
test "note marker should have description as a title" do
|
||||
position = (1.1 * GeoRecord::SCALE).to_i
|
||||
create(:note, :latitude => position, :longitude => position) do |note|
|
||||
create(:note_comment, :note => note, :body => "Note description")
|
||||
create(:note_comment, :note => note, :body => "Note description", :event => "opened")
|
||||
end
|
||||
|
||||
visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
|
||||
|
@ -16,8 +16,8 @@ class NoteLayerTest < ApplicationSystemTestCase
|
|||
test "note marker should not have a title if the note has no visible description" do
|
||||
position = (1.1 * GeoRecord::SCALE).to_i
|
||||
create(:note, :latitude => position, :longitude => position) do |note|
|
||||
create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
|
||||
create(:note_comment, :note => note, :body => "Note comment visible", :event => "commented")
|
||||
create(:note_comment, :note => note, :body => "Note description is hidden", :event => "opened", :visible => false)
|
||||
create(:note_comment, :note => note, :body => "Note comment visible")
|
||||
end
|
||||
|
||||
visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
|
||||
|
@ -29,7 +29,7 @@ class NoteLayerTest < ApplicationSystemTestCase
|
|||
test "note marker should not have a title if the note has no visible description and comments" do
|
||||
position = (1.1 * GeoRecord::SCALE).to_i
|
||||
create(:note, :latitude => position, :longitude => position) do |note|
|
||||
create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
|
||||
create(:note_comment, :note => note, :body => "Note description is hidden", :event => "opened", :visible => false)
|
||||
end
|
||||
|
||||
visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
|
||||
|
|
|
@ -31,7 +31,8 @@ class ReportNoteTest < ApplicationSystemTestCase
|
|||
end
|
||||
|
||||
def test_can_report_notes_with_author
|
||||
note = create(:note_comment, :author => create(:user)).note
|
||||
user = create(:user)
|
||||
note = create(:note_comment, :author => user, :note => build(:note, :author => user)).note
|
||||
sign_in_as(create(:user))
|
||||
visit note_path(note)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue