Skip to content

Commit

Permalink
Render Datetime ingredient in local time zone.
Browse files Browse the repository at this point in the history
Datetime values are stored in UTC in the database.
We need to render them in the local timezone.
  • Loading branch information
tvdeyen committed Aug 29, 2024
1 parent 64d0258 commit e31a11f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 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: :"alchemy.default", html_options: {})
end

def call
datetime = ingredient.value.in_time_zone
if date_format == "rfc822"
ingredient.value.to_fs(:rfc822)
datetime.to_fs(: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 @@ -17,13 +17,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
9 changes: 6 additions & 3 deletions spec/views/alchemy/ingredients/datetime_view_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +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") }
let(:ingredient) do
Alchemy::Ingredients::Datetime.new(value: "2024-08-29T10:00:00.000Z")
end

let(:options) { {} }

context "with date value" do
context "without date_format passed" do
it "translates the date value with default format" do
render ingredient, options: options
expect(rendered).to have_content("10.27.2013 20:14")
expect(rendered).to have_content("08.29.2024 12:00")
end
end

Expand All @@ -19,7 +22,7 @@

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

0 comments on commit e31a11f

Please sign in to comment.