def METHOD_NAME(self):
    user = TapirUserFactory.create(is_in_member_office=False)
    self.login_as_member_office_user()
    shift_template: ShiftTemplate = ShiftTemplateFactory.create()
    shift = shift_template.create_shift(
        timezone.now().date() + datetime.timedelta(days=2)
    )
    register_user_to_shift_template(self.client, user, shift_template)
    response = self.client.post(
        reverse(self.VIEW_NAME_CANCEL_SHIFT, args=[shift.id]),
        {"cancelled_reason": self.A_CANCELLATION_REASON},
    )
    self.assertRedirects(
        response,
        shift.get_absolute_url(),
        msg_prefix="The request should redirect to the shift's page.",
    )
    self.assertEqual(
        ShiftAttendance.objects.get(user=user, slot__shift=shift).state,
        ShiftAttendance.State.MISSED_EXCUSED,
        "The attendance is from an ABCD shift, it should get excused.",
    )
    self.assertEqual(
        user.shift_user_data.get_account_balance(),
        1,
        "Because the attendance got excused, the account balance should have increased to 1.",
    )