@@ -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+
203265class TestClinicSlotPresenter :
204266 @pytest .fixture
205267 def clinic_slot_mock (self ):
0 commit comments