Skip to content

Commit

Permalink
Merge pull request #3017 from AlchemyCMS/backport/7.0-stable/pr-3003
Browse files Browse the repository at this point in the history
[7.0-stable] Render Datetime ingredient in local time zone
  • Loading branch information
tvdeyen authored Sep 4, 2024
2 parents 4a92bea + 791243f commit 3fabf84
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
5 changes: 3 additions & 2 deletions app/components/alchemy/ingredients/datetime_view.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ def initialize(ingredient, date_format: nil, html_options: {})
end

def call
datetime = ingredient.value.in_time_zone(Rails.application.config.time_zone)
if date_format == "rfc822"
ingredient.value.to_s(:rfc822)
datetime.try(:to_fs, :rfc822) || datetime.to_s(:rfc822)
else
::I18n.l(ingredient.value, format: date_format)
::I18n.l(datetime, format: date_format)
end.html_safe
end
end
Expand Down
6 changes: 5 additions & 1 deletion spec/models/alchemy/ingredients/datetime_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,17 @@
end

describe "value" do
subject { datetime_ingredient.value }
subject(:value) { datetime_ingredient.value }

it "returns a time object" do
is_expected.to be_an(Time)
is_expected.to eq("01.04.2021")
end

it "timezone is UTC" do
expect(value.zone).to eq("UTC")
end

context "without value" do
let(:datetime_ingredient) do
described_class.new(
Expand Down
20 changes: 15 additions & 5 deletions spec/views/alchemy/ingredients/datetime_view_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,17 @@
require "rails_helper"

describe "alchemy/ingredients/_datetime_view" do
let(:ingredient) { Alchemy::Ingredients::Datetime.new(value: "2013-10-27 21:14:16 +0100") }
around do |example|
time_zone = Rails.application.config.time_zone
Rails.application.config.time_zone = "Berlin"
example.run
Rails.application.config.time_zone = time_zone
end

let(:ingredient) do
Alchemy::Ingredients::Datetime.new(value: "2024-08-29T10:00:00.000Z")
end

let(:options) { {} }

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

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

it "renders the date rfc822 conform" do
render ingredient
expect(rendered).to have_content("Sun, 27 Oct 2013 20:14:16 +0000")
render ingredient, options: options
expect(rendered).to have_content("Thu, 29 Aug 2024 12:00:00 +0200")
end
end
end
Expand Down

0 comments on commit 3fabf84

Please sign in to comment.