<p></p>
<p><b>@tomhughes</b> commented on this pull request.</p>

<hr>

<p>In <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5284#discussion_r1817771455">app/controllers/api/notes_controller.rb</a>:</p>
<pre style='color:#555'>> @@ -401,6 +401,8 @@ def add_comment(note, text, event, notify: true)
       note.comments.map(&:author).uniq.each do |user|
         UserMailer.note_comment_notification(comment, user).deliver_later if notify && user && user != current_user && user.visible?
       end
+
+      NoteSubscription.find_or_create_by(:note => note, :user => current_user) if current_user
</pre>
<p dir="auto">I think this could be simplified using the association?</p>
⬇️ Suggested change
<pre style="color: #555">-      NoteSubscription.find_or_create_by(:note => note, :user => current_user) if current_user
+      current_user&.note__subscriptions.find_or_create_by(:note => note)
</pre>


<hr>

<p>In <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5284#discussion_r1817772093">test/controllers/api/notes_controller_test.rb</a>:</p>
<pre style='color:#555'>> +        end
+      end
+      assert_response :success
+      js = ActiveSupport::JSON.decode(@response.body)
+      assert_not_nil js
+      assert_equal "Feature", js["type"]
+      assert_equal "Point", js["geometry"]["type"]
+      assert_equal [-1.0, -1.0], js["geometry"]["coordinates"]
+      assert_equal "open", js["properties"]["status"]
+      assert_equal 1, js["properties"]["comments"].count
+      assert_equal "opened", js["properties"]["comments"].last["action"]
+      assert_equal "This is a comment", js["properties"]["comments"].last["text"]
+      assert_equal user.display_name, js["properties"]["comments"].last["user"]
+
+      note = Note.last
+      subscription = NoteSubscription.last
</pre>
<p dir="auto">This (and all the other similar versions in other tests) is relying on nothing else having created notes or users in a way that overlaps this test and I'm not sure how safe that is when tests are running in parallel?</p>
<p dir="auto">Maybe it would be better to get the node ID from the JSON response and then do <code class="notranslate">assert Note.exists?(id)</code> and a similar exists assertion on the subscription record?</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/5284#pullrequestreview-2397146273">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAK2OLPD2FUSV2QCX3JPXN3Z5NXGZAVCNFSM6AAAAABQRIOTM2VHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGOJXGE2DMMRXGM">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AAK2OLPLQP4HVQ53YVTPUQ3Z5NXGZA5CNFSM6AAAAABQRIOTM2WGG33NNVSW45C7OR4XAZNRKB2WY3CSMVYXKZLTORJGK5TJMV32UY3PNVWWK3TUL5UWJTUO4GGKC.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><openstreetmap/openstreetmap-website/pull/5284/review/2397146273</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/openstreetmap-website/pull/5284#pullrequestreview-2397146273",
"url": "https://github.com/openstreetmap/openstreetmap-website/pull/5284#pullrequestreview-2397146273",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>