From 4e6d4193ea22819fc4f63806e05fb9806210d9af Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Wed, 3 Jan 2024 16:55:08 +1000 Subject: [PATCH] DEV: Fix spec for post menu (#25100) Followup to b92993fceea107c6f1cbc04eac6008827a61a000 I ran out of time to get this working for that fix, also here I am making the post.url method have parity with post.shareUrl in JS, which omits the post number for the first post. --- app/models/post.rb | 14 +++++++++----- spec/system/post_menu_spec.rb | 9 ++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 473e306911a..30dfb179862 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -645,12 +645,12 @@ class Post < ActiveRecord::Base publish_change_to_clients!(:acted) end - def full_url - "#{Discourse.base_url}#{url}" + def full_url(opts = {}) + "#{Discourse.base_url}#{url(opts)}" end - def relative_url - "#{Discourse.base_path}#{url}" + def relative_url(opts = {}) + "#{Discourse.base_path}#{url(opts)}" end def url(opts = nil) @@ -685,7 +685,11 @@ class Post < ActiveRecord::Base result = +"/t/" result << "#{slug}/" if !opts[:without_slug] - "#{result}#{topic_id}/#{post_number}" + if post_number == 1 && opts[:share_url] + "#{result}#{topic_id}" + else + "#{result}#{topic_id}/#{post_number}" + end end def self.urls(post_ids) diff --git a/spec/system/post_menu_spec.rb b/spec/system/post_menu_spec.rb index 2755df4775c..67fbb247129 100644 --- a/spec/system/post_menu_spec.rb +++ b/spec/system/post_menu_spec.rb @@ -2,7 +2,8 @@ describe "Post menu", type: :system, js: true do fab!(:current_user) { Fabricate(:user) } - fab!(:post) + fab!(:topic) + fab!(:post) { Fabricate(:post, topic: topic) } let(:topic_page) { PageObjects::Pages::Topic.new } @@ -13,10 +14,12 @@ describe "Post menu", type: :system, js: true do before { cdp.allow_clipboard } - xit "copies the absolute link to the post when clicked" do + it "copies the absolute link to the post when clicked" do topic_page.visit_topic(post.topic) topic_page.click_post_action_button(post, :copy_link) - expect(cdp.read_clipboard).to eq(post.full_url + "?u=#{current_user.username}") + expect(cdp.read_clipboard).to eq( + post.full_url(share_url: true) + "?u=#{current_user.username}", + ) end end end