mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-22 07:46:56 +08:00
In this PR we introduced 3 new timezones to UX - IST, KST and JST
cb2569303f
However, the same has to be done in PrettyText so cooked posts respect those timezones.
124 lines
3.8 KiB
Ruby
Vendored
124 lines
3.8 KiB
Ruby
Vendored
# frozen_string_literal: true
|
||
|
||
RSpec.describe "Local Dates" do
|
||
before { freeze_time DateTime.parse("2018-11-10 12:00") }
|
||
|
||
it "should work without timezone" do
|
||
post = Fabricate(:post, raw: <<~MD)
|
||
[date=2018-05-08 time=22:00 format="L LTS" timezones="Europe/Paris|America/Los_Angeles"]
|
||
MD
|
||
|
||
cooked = post.cooked
|
||
|
||
expect(cooked).to include('class="discourse-local-date"')
|
||
expect(cooked).to include('data-date="2018-05-08"')
|
||
expect(cooked).to include('data-format="L LTS"')
|
||
expect(cooked).not_to include("data-timezone=")
|
||
|
||
expect(cooked).to include('data-timezones="Europe/Paris|America/Los_Angeles"')
|
||
|
||
expect(cooked).to include('data-email-preview="2018-05-08T22:00:00Z UTC"')
|
||
expect(cooked).to include("05/08/2018 10:00:00 PM")
|
||
end
|
||
|
||
it "should work with timezone" do
|
||
post = Fabricate(:post, raw: <<~MD)
|
||
[date=2018-05-08 time=22:00 format="L LTS" timezone="Asia/Calcutta" timezones="Europe/Paris|America/Los_Angeles"]
|
||
MD
|
||
|
||
cooked = post.cooked
|
||
|
||
expect(cooked).to include('data-timezone="Asia/Calcutta"')
|
||
expect(cooked).to include("05/08/2018 4:30:00 PM")
|
||
|
||
post = Fabricate(:post, raw: <<~MD)
|
||
[date=2018-05-08 time=22:00 format="L LTS" timezone="IST"]
|
||
MD
|
||
|
||
cooked = post.cooked
|
||
|
||
expect(cooked).to include('data-timezone="IST"')
|
||
expect(cooked).to include("05/08/2018 4:30:00 PM")
|
||
end
|
||
|
||
it "requires the right attributes to convert to a local date" do
|
||
post = Fabricate(:post, raw: <<~MD)
|
||
[date]
|
||
MD
|
||
|
||
cooked = post.cooked
|
||
|
||
expect(post.cooked).to include("<p>[date]</p>")
|
||
expect(cooked).to_not include("data-date=")
|
||
end
|
||
|
||
it "requires the right attributes to convert to a local date" do
|
||
post = Fabricate(:post, raw: <<~MD)
|
||
[date]
|
||
MD
|
||
|
||
cooked = post.cooked
|
||
|
||
expect(post.cooked).to include("<p>[date]</p>")
|
||
expect(cooked).to_not include("data-date=")
|
||
end
|
||
|
||
it "it works with only a date and time" do
|
||
raw = "[date=2018-11-01 time=12:00]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
expect(cooked).to include('data-date="2018-11-01"')
|
||
expect(cooked).to include('data-time="12:00"')
|
||
end
|
||
|
||
it "doesn’t include format by default" do
|
||
raw = "[date=2018-11-01 time=12:00]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
expect(cooked).not_to include("data-format=")
|
||
end
|
||
|
||
it "doesn’t include timezone by default" do
|
||
raw = "[date=2018-11-01 time=12:00]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
|
||
expect(cooked).not_to include("data-timezone=")
|
||
end
|
||
|
||
it "supports countdowns" do
|
||
raw = "[date=2018-11-01 time=12:00 countdown=true]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
|
||
expect(cooked).to include("data-countdown=")
|
||
end
|
||
|
||
describe "ranges" do
|
||
it "generates ranges without time" do
|
||
raw = "[date-range from=2022-01-06 to=2022-01-08]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
|
||
expect(cooked).to include('data-date="2022-01-06')
|
||
expect(cooked).to include('data-range="from"')
|
||
expect(cooked).to include('data-range="to"')
|
||
expect(cooked).not_to include("data-time=")
|
||
end
|
||
|
||
it "supports time and timezone" do
|
||
raw = "[date-range from=2022-01-06T13:00 to=2022-01-08 timezone=Australia/Sydney]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
|
||
expect(cooked).to include('data-date="2022-01-06')
|
||
expect(cooked).to include('data-range="to"')
|
||
expect(cooked).to include('data-range="from"')
|
||
expect(cooked).to include('data-time="13:00"')
|
||
expect(cooked).to include('data-timezone="Australia/Sydney"')
|
||
end
|
||
|
||
it "generates single date when range without end date" do
|
||
raw = "[date-range from=2022-01-06T13:00]"
|
||
cooked = Fabricate(:post, raw: raw).cooked
|
||
|
||
expect(cooked).to include('data-date="2022-01-06')
|
||
expect(cooked).to include('data-time="13:00"')
|
||
expect(cooked).not_to include('data-range="to"')
|
||
end
|
||
end
|
||
end
|