Skip to content

Commit 3c03ac1

Browse files
committed
Add system_env mock & implementation
1 parent b239a41 commit 3c03ac1

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

lib/system_env_behaviour.ex

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule SystemEnvBehaviour do
2+
@moduledoc """
3+
The abstract behaviour of SystemEnvBehaviour
4+
"""
5+
@callback get_env() :: %{optional(String.t()) => String.t()}
6+
@callback get_env(String.t(), String.t() | nil) :: String.t() | nil
7+
end

lib/system_env_impl.ex

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
defmodule SystemEnvImpl do
2+
@moduledoc """
3+
An implementation of SystemEnvBehaviour by proxying into System
4+
"""
5+
6+
@behaviour SystemEnvBehaviour
7+
8+
@impl SystemEnvBehaviour
9+
def get_env do
10+
System.get_env()
11+
end
12+
13+
@impl SystemEnvBehaviour
14+
def get_env(varname, default \\ nil) do
15+
System.get_env(varname, default)
16+
end
17+
end

test/test_helper.exs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1+
Mox.defmock(SystemEnvBehaviourMock, for: SystemEnvBehaviour)
2+
Application.put_env(:context, :system_env, SystemEnvBehaviourMock)
3+
14
ExUnit.start()

0 commit comments

Comments
 (0)