# `test.subscriber_failed`

Subscriber failed for good during a test.

Area 13, [Testing](../topics/testing.md); not declinable; the next step is usually the agent's.

A delivery between the test's steps failed for good, or stopped as
`diverged`, its rerun no longer matching the record of its steps: here its subscriber's action refuses with a
failure not worth retrying. The report names the event, the subscriber and the attempt,
then the failure as `test.unexpected_failure` shows one, at the step
whose events were being delivered:








```jadpo
use post/entities { Parcel, ParcelNotFound }
use post/types { Address }
use post/failures { NoSuchPlace }

/// Labels a parcel for its round.
action label(parcel_id: Parcel.id, address: Address) fails ParcelNotFound, NoSuchPlace -> Unit {
    if (address == "The Moon") {
        reject NoSuchPlace {}
    }
    attempt Parcel.update(parcel_id) {
        set: {
            labelled: true
        }
    }
}
```

```jadpo
use post/actions { label }
use post/events { ParcelHandedIn }

/// Labels each parcel handed in.
subscriber label_handed_in {
    on: ParcelHandedIn
    run: label(event.parcel_id, event.address)
}
```

```jadpo
use post/entities { Parcel }

test "a parcel for the moon is taken in" {
    var parcel: Parcel = hand_in("The Moon")
    assert parcel.labelled == false
}
```

```text
FAIL  a parcel for the moon is taken in
 --> domains/post/actions/hand_in.test.jadpo:4

  delivery: `ParcelHandedIn` to subscriber `label_handed_in` failed for good on attempt 1 of 10
  failure: `NoSuchPlace` from action label
  at: domains/post/actions/label.jadpo:8:9
  |
8 |         reject NoSuchPlace {}
  |         ^^^^^^^^^^^^^^^^^^^^^ rejected here
  code: no_such_place
  kind: FailureKind.rejected
  message: We don't deliver there.
  path: test "a parcel for the moon is taken in" -> action label

  rule: test.subscriber_failed
  rerun: jadpo test domains/post/actions/hand_in.test.jadpo:4 --seed 1

test failed: 1 failed, 1 action test
```
