hauks96
Does anyone have any experience with unit testing modules that need to be tested using DateTime objects with different timezones without having a real timezone database?
I am having trouble understanding how I would mock the timezone database in a way that would allow using methods such as DateTime.new!(Date.t, Time.t, Calendar.time_zone, Calendar.time_zone_database) without failing since the timezone database is not available.
Trending in Questions
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Other Trending Topics
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #metaprogramming










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
dimitarvp
Never tried what you need but I’d think that mock or patch will do the job.
hauks96
I know mock, but I don’t know how to mock a timezone database with it.
I don’t want to mock the functions I am calling, because I want to assert that the timezone conversions are taking place in the modules I am testing.
dimitarvp
Intuitively, I’d say just inspect Elixir’s source and see which timezone functions it uses when a timezone database is supplied?
Here’s what Elixir itself does when ultimately it gets down to calling a function from the timezone module: elixir/lib/elixir/lib/calendar/datetime.ex at 1a1eda52b46e37b0c77835e374c16ec64bb5c638 · elixir-lang/elixir · GitHub
Basically it calls its
time_zone_periods_from_wall_datetime/2function (first argument is datetime, second argument is a timezone).Another example in Elixir itself is how such a timezone database can be faked. Here: elixir/lib/elixir/test/elixir/calendar/fakes.exs at 1a1eda52b46e37b0c77835e374c16ec64bb5c638 · elixir-lang/elixir · GitHub
The link is to the above function but the entire module should be looked at.
You can combine that knowledge with either
mockorpatchso you have a local offline fake timezone database.dimitarvp
Just now saw your edit but it doesn’t change much. You can still make your mock respect timezone offsets.
Alternatively, I think you can just use a proper timezone database and instruct it to not do network requests.
tz has very configurable behaviour on when (or if?) to do automatic updates.
Here’s a link to the docs of tzdata that show you how to disable automatic updates.
hauks96
Thank you! I’ll take a look and share the results
LostKobrakai
Using past datetimes on non disputed regions should give you a rather stable timezone definition.
If you still need more control then you can use Mox with the time zone database behaviour and mock that.