Skip to content

Commit

Permalink
feedback: alternate handling of until further notice
Browse files Browse the repository at this point in the history
  • Loading branch information
thecristen committed Feb 27, 2025
1 parent 28678c4 commit fc6357e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
11 changes: 8 additions & 3 deletions lib/dotcom/utils/service_date_time.ex
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,17 @@ defmodule Dotcom.Utils.ServiceDateTime do
end

@doc """
Returns all service ranges between two datetimes, inclusive, supporting open ends.
Returns service ranges between two datetimes, inclusive.
One datetime can be given, which will return only the service range for the given datetime.
"""
@spec service_range_range(DateTime.t() | nil, DateTime.t() | nil) :: [named_service_range()]
def service_range_range(nil, nil), do: []
def service_range_range(start, nil) when not is_nil(start), do: [service_range(start)]
def service_range_range(nil, stop) when not is_nil(stop), do: [service_range(stop)]

def service_range_range(start, stop) do
start_index = if(start, do: service_range_index(start), else: 0)
stop_index = if(stop, do: service_range_index(stop), else: length(all_service_ranges()) - 1)
start_index = service_range_index(start)
stop_index = service_range_index(stop)

all_service_ranges()
|> Enum.with_index(&if(&2 in start_index..stop_index, do: &1))
Expand Down
13 changes: 4 additions & 9 deletions test/dotcom/utils/service_date_time_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -236,25 +236,20 @@ defmodule Dotcom.Utils.ServiceDateTimeTest do
assert service_range_range(today, next_week) == [:today, :this_week, :next_week]
end

test "returns all service ranges starting from a datetime" do
test "returns one service range when given only one start datetime" do
# Setup
next_week = service_range_next_week() |> random_time_range_date_time()

# Exercise / Verify
assert service_range_range(next_week, nil) == [:next_week, :after_next_week]
assert service_range_range(next_week, nil) == [:next_week]
end

test "returns all service ranges up to a datetime" do
test "returns one service range when given only one stop datetime" do
# Setup
next_week = service_range_next_week() |> random_time_range_date_time()

# Exercise / Verify
assert service_range_range(nil, next_week) == [
:before_today,
:today,
:this_week,
:next_week
]
assert service_range_range(nil, next_week) == [:next_week]
end
end

Expand Down

0 comments on commit fc6357e

Please sign in to comment.