Skip to content

Commit b00e2c2

Browse files
committed
TestStatusBarPresenter
1 parent 29ed564 commit b00e2c2

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

manage_breast_screening/mammograms/tests/presenters/test_appointment_presenters.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,68 @@ def test_status_attribution(
200200
assert presenter.status_attribution == expected_result
201201

202202

203+
class TestStatusBarPresenter:
204+
@pytest.fixture
205+
def mock_appointment(self):
206+
mock = MagicMock(spec=Appointment)
207+
mock.screening_episode.participant.nhs_number = "99900900829"
208+
mock.screening_episode.participant.pk = uuid4()
209+
return mock
210+
211+
@pytest.fixture
212+
def mock_user(self):
213+
return MagicMock(spec=User)
214+
215+
def test_show_status_bar_when_in_progress_and_user_is_owner(
216+
self, mock_appointment, mock_user
217+
):
218+
mock_appointment.current_status.state = AppointmentStatus.IN_PROGRESS
219+
mock_user.nhs_uid = "user-123"
220+
mock_appointment.current_status.created_by.nhs_uid = "user-123"
221+
presenter = AppointmentPresenter(mock_appointment)
222+
assert presenter.status_bar.show_status_bar_for(mock_user)
223+
224+
def test_show_status_bar_when_user_is_not_owner(self, mock_appointment, mock_user):
225+
mock_appointment.current_status.state = AppointmentStatus.IN_PROGRESS
226+
mock_user.nhs_uid = "user-123"
227+
mock_appointment.current_status.created_by.nhs_uid = "user-456"
228+
presenter = AppointmentPresenter(mock_appointment)
229+
assert not presenter.status_bar.show_status_bar_for(mock_user)
230+
231+
@pytest.mark.parametrize(
232+
"current_state",
233+
[
234+
AppointmentStatus.CONFIRMED,
235+
AppointmentStatus.CHECKED_IN,
236+
AppointmentStatus.DID_NOT_ATTEND,
237+
AppointmentStatus.SCREENED,
238+
AppointmentStatus.PARTIALLY_SCREENED,
239+
AppointmentStatus.ATTENDED_NOT_SCREENED,
240+
],
241+
)
242+
def test_dont_show_status_bar_when_not_in_progress(
243+
self, mock_appointment, mock_user
244+
):
245+
mock_appointment.current_status.state = AppointmentStatus.CONFIRMED
246+
mock_user.nhs_uid = "user-123"
247+
mock_appointment.current_status.created_by.nhs_uid = "user-123"
248+
presenter = AppointmentPresenter(mock_appointment)
249+
assert not presenter.status_bar.show_status_bar_for(mock_user)
250+
251+
def test_tag_properties(self, mock_appointment):
252+
presenter = AppointmentPresenter(mock_appointment)
253+
assert presenter.status_bar.tag_properties == {
254+
"classes": "nhsuk-tag--yellow nhsuk-u-margin-left-1",
255+
"text": "Special appointment",
256+
}
257+
258+
def test_attributes(self, mock_appointment):
259+
presenter = AppointmentPresenter(mock_appointment)
260+
assert presenter.status_bar.appointment == presenter
261+
assert presenter.status_bar.clinic_slot == presenter.clinic_slot
262+
assert presenter.status_bar.participant == presenter.participant
263+
264+
203265
class TestClinicSlotPresenter:
204266
@pytest.fixture
205267
def clinic_slot_mock(self):

0 commit comments

Comments
 (0)