Skip to content

Commit c2ee85d

Browse files
authored
Merge pull request #3019 from AlchemyCMS/backport/7.2-stable/pr-3003
[7.2-stable] Render Datetime ingredient in local time zone
2 parents 337d5f2 + afc227d commit c2ee85d

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

app/components/alchemy/ingredients/datetime_view.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ def initialize(ingredient, date_format: nil, html_options: {})
1111
end
1212

1313
def call
14+
datetime = ingredient.value.in_time_zone(Rails.application.config.time_zone)
1415
if date_format == "rfc822"
15-
ingredient.value.to_s(:rfc822)
16+
datetime.to_fs(:rfc822)
1617
else
17-
::I18n.l(ingredient.value, format: date_format)
18+
::I18n.l(datetime, format: date_format)
1819
end.html_safe
1920
end
2021
end

spec/models/alchemy/ingredients/datetime_spec.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,17 @@
2323
end
2424

2525
describe "value" do
26-
subject { datetime_ingredient.value }
26+
subject(:value) { datetime_ingredient.value }
2727

2828
it "returns a time object" do
2929
is_expected.to be_an(Time)
3030
is_expected.to eq("01.04.2021")
3131
end
3232

33+
it "timezone is UTC" do
34+
expect(value.zone).to eq("UTC")
35+
end
36+
3337
context "without value" do
3438
let(:datetime_ingredient) do
3539
described_class.new(

spec/views/alchemy/ingredients/datetime_view_spec.rb

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,17 @@
33
require "rails_helper"
44

55
describe "alchemy/ingredients/_datetime_view" do
6-
let(:ingredient) { Alchemy::Ingredients::Datetime.new(value: "2013-10-27 21:14:16 +0100") }
6+
around do |example|
7+
time_zone = Rails.application.config.time_zone
8+
Rails.application.config.time_zone = "Berlin"
9+
example.run
10+
Rails.application.config.time_zone = time_zone
11+
end
12+
13+
let(:ingredient) do
14+
Alchemy::Ingredients::Datetime.new(value: "2024-08-29T10:00:00.000Z")
15+
end
16+
717
let(:options) { {} }
818

919
before do
@@ -13,17 +23,17 @@
1323
context "with date value" do
1424
context "without date_format passed" do
1525
it "translates the date value with default format" do
16-
render ingredient
17-
expect(rendered).to have_content("Sun, 27 Oct 2013 20:14:16 +0000")
26+
render ingredient, options: options
27+
expect(rendered).to have_content("Thu, 29 Aug 2024 12:00:00 +0200")
1828
end
1929
end
2030

2131
context "with option date_format set to rfc822" do
2232
let(:options) { {date_format: "rfc822"} }
2333

2434
it "renders the date rfc822 conform" do
25-
render ingredient
26-
expect(rendered).to have_content("Sun, 27 Oct 2013 20:14:16 +0000")
35+
render ingredient, options: options
36+
expect(rendered).to have_content("Thu, 29 Aug 2024 12:00:00 +0200")
2737
end
2838
end
2939
end

0 commit comments

Comments
 (0)