Skip to content

Commit

Permalink
[BUG FIX] [MER-3704] Wrong scheduling type label on page header (Simo…
Browse files Browse the repository at this point in the history
…n-Initiative#5083)

* add scheduling type to Combined settings struct

* implement scheduling type label on page header

* update tests

* extend test
  • Loading branch information
nicocirio committed Sep 9, 2024
1 parent 896fc19 commit 004595a
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 11 deletions.
1 change: 1 addition & 0 deletions lib/oli/delivery/settings.ex
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ defmodule Oli.Delivery.Settings do

%Combined{
resource_id: resolved_revision.resource_id,
scheduling_type: section_resource.scheduling_type,
start_date: combine_field(:start_date, section_resource, student_exception),
end_date: combine_field(:end_date, section_resource, student_exception),
max_attempts: max_attempts,
Expand Down
2 changes: 2 additions & 0 deletions lib/oli/delivery/settings/combined.ex
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
defmodule Oli.Delivery.Settings.Combined do
defstruct resource_id: nil,
scheduling_type: :read_by,
start_date: nil,
end_date: nil,
max_attempts: 0,
Expand All @@ -19,6 +20,7 @@ defmodule Oli.Delivery.Settings.Combined do

@type t() :: %__MODULE__{
resource_id: integer(),
scheduling_type: :due_by | :read_by | :inclass_activity,
start_date: DateTime.t(),
end_date: DateTime.t(),
max_attempts: integer(),
Expand Down
4 changes: 2 additions & 2 deletions lib/oli_web/common/format_date_time.ex
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ defmodule OliWeb.Common.FormatDateTime do

def to_formatted_datetime(datetime, ctx, format \\ "{WDshort} {Mshort} {D}, {YYYY}")

def to_formatted_datetime(nil, _ctx, _format), do: "not yet scheduled"
def to_formatted_datetime(nil, _ctx, _format), do: "Not yet scheduled"

def to_formatted_datetime(datetime, ctx, format) do
if is_binary(datetime) do
Expand All @@ -294,7 +294,7 @@ defmodule OliWeb.Common.FormatDateTime do
end
end

defp to_datetime(nil), do: "not yet scheduled"
defp to_datetime(nil), do: "Not yet scheduled"

defp to_datetime(string_datetime) do
{:ok, datetime, _} = DateTime.from_iso8601(string_datetime)
Expand Down
7 changes: 1 addition & 6 deletions lib/oli_web/live/delivery/student/learn_live.ex
Original file line number Diff line number Diff line change
Expand Up @@ -1472,7 +1472,7 @@ defmodule OliWeb.Delivery.Student.LearnLive do
>
<div class="h-[19px] mb-5">
<span class="dark:text-white text-sm font-bold font-['Open Sans']">
<%= "#{label_for_scheduling_type(grouped_scheduling_type)}#{format_date(grouped_due_date, @ctx, "{WDshort} {Mshort} {D}, {YYYY}")}" %>
<%= "#{Utils.label_for_scheduling_type(grouped_scheduling_type)}#{format_date(grouped_due_date, @ctx, "{WDshort} {Mshort} {D}, {YYYY}")}" %>
</span>
</div>
<.index_item
Expand Down Expand Up @@ -2660,11 +2660,6 @@ defmodule OliWeb.Delivery.Student.LearnLive do
Map.get(student_end_date_exceptions_per_resource_id, resource_id, end_date)
end

defp label_for_scheduling_type(:due_by), do: "Due by: "
defp label_for_scheduling_type(:read_by), do: "Read by: "
defp label_for_scheduling_type(:inclass_activity), do: "In-class activity by: "
defp label_for_scheduling_type(_), do: ""

defp format_date("Not yet scheduled", _context, _format), do: "Not yet scheduled"

defp format_date(due_date, context, format) do
Expand Down
12 changes: 11 additions & 1 deletion lib/oli_web/live/delivery/student/utils.ex
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,12 @@ defmodule OliWeb.Delivery.Student.Utils do
</div>
</div>
<div role="page schedule" class="justify-start items-start gap-1 flex">
<div class="opacity-50 dark:text-white text-xs font-normal">Due:</div>
<div
:if={@page_context.effective_settings.end_date}
class="opacity-50 dark:text-white text-xs font-normal"
>
<%= label_for_scheduling_type(@page_context.effective_settings.scheduling_type) %>
</div>
<div class="dark:text-white text-xs font-normal">
<%= FormatDateTime.to_formatted_datetime(
@page_context.effective_settings.end_date,
Expand Down Expand Up @@ -150,6 +155,11 @@ defmodule OliWeb.Delivery.Student.Utils do
"""
end

def label_for_scheduling_type(:due_by), do: "Due by: "
def label_for_scheduling_type(:read_by), do: "Read by: "
def label_for_scheduling_type(:inclass_activity), do: "In-class activity by: "
def label_for_scheduling_type(_), do: ""

def proficiency_explanation_modal(assigns) do
assigns =
assign(assigns, %{
Expand Down
4 changes: 2 additions & 2 deletions test/oli_web/live/delivery/student/learn_live_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -1580,7 +1580,7 @@ defmodule OliWeb.Delivery.Student.ContentLiveTest do
# unit 2 has not been scheduled by instructor, so there must not be a schedule details data
assert view
|> element(~s{div[role="unit_2"] div[role="schedule_details"]})
|> render() =~ "Due:\n </span>\n not yet scheduled"
|> render() =~ "Due:\n </span>\n Not yet scheduled"
end

test "can see units, modules and page (at module level) progresses", %{
Expand Down Expand Up @@ -1751,7 +1751,7 @@ defmodule OliWeb.Delivery.Student.ContentLiveTest do
|> element(
~s{div[id="top_level_page_#{top_level_page.resource_id}"] div[role="schedule_details"]}
)
|> render() =~ "Due:\n </span>\n not yet scheduled"
|> render() =~ "Not yet scheduled"

assert view
|> element(~s{div[id="page_#{top_level_page.resource_id}"][role="card_1"]})
Expand Down
1 change: 1 addition & 0 deletions test/oli_web/live/delivery/student/lesson_live_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -839,6 +839,7 @@ defmodule OliWeb.Delivery.Student.LessonLiveTest do
assert has_element?(view, ~s{div[role="page numbering index"]}, "2.")
assert has_element?(view, ~s{div[role="page title"]}, "Page 2")
assert has_element?(view, ~s{div[role="page read time"]}, "15")
assert has_element?(view, ~s{div[role="page schedule"]}, "Read by:")
assert has_element?(view, ~s{div[role="page schedule"]}, "Tue Nov 14, 2023")
end

Expand Down

0 comments on commit 004595a

Please sign in to comment.