[CI Minutes Provisioning] AdditionalPack testing plan

### Summary

We have introduced a new concept of an `Ci::Minutes::AdditionalPack` model on GitLab for handling the new provisioning of CI minutes purchases from CustomersDot.

This new model has API endpoints that allow us to (re-)sync purchased packs as well as transfer them between namespaces (currently, only when subscriptions are moved).

Further information is available in the proposal document, [here](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/staging/doc/ci_minutes/provisioning_proposal.md).

The current status of this work is that creation and transferring of packs is implemented, but currently un-used on the GitLab side (see the [epic](https://gitlab.com/groups/gitlab-org/-/epics/5715) for more detail).

This means that CI minutes balance and consumption is still using the old `namespace#extra_shared_runners_minutes_limit`, so although the individual parts are tested at a unit level, we can't easily write E2E tests for this _new_ provisioning yet (someone please correct me if there's a simple way of doing this without UI changes to test against).

So for now, in order to test the current work end to end, I've created a test plan that I've been working against which I'll document here.

We can use this plan for checking off scenarios during our manual testing, and eventually using it as a basis for writing automated QA tests.


### Setup

As mentioned above, given there's no UI you can use to verify changes on the GitLab side, we'll need to use a rails console to do it manually, so firstly, here are some (hopefully) useful console snippets for verifying each step:

**Ensure feature flag enabled: **

```ruby
Unleash.enabled?(:new_ci_provisioning)
```

This is currently [toggled on](https://gitlab.com/gitlab-org/customers-gitlab-com/-/feature_flags?scope=featureFlags&page=1) for `customers-development` and `customers-staging` environments.

**Check purchased pack counts on GitLab:**

```ruby
# Total packs count:
Ci::Minutes::AdditionalPack.count

# a User's packs and count:
user.reload
user.namespace.ci_minutes_additional_packs
user.namespace.ci_minutes_additional_packs.count
user.namespace.ci_minutes_additional_packs.sum(&:number_of_minutes)

# a Group's packs and count:
group.reload
group.ci_minutes_additional_packs
group.ci_minutes_additional_packs.count
group.ci_minutes_additional_packs.sum(&:number_of_minutes)
```

### The Tests:

#### Buying packs:

- **Buy minutes for user**
    - [ ] Check additional packs count
    - [ ] Check additional packs number of minutes
        - **Buy more minutes for User**
            - [ ] Check additional packs count
            - [ ] Check additional packs number of minutes
- **Buy minutes for group**
    - [ ] Check additional packs count
    - [ ] Check additional packs number of minutes
        - **Buy more minutes for group**
            - [ ] Check additional packs
            - [ ] Check additional packs number of minutes
- **Buy subscription for user**
    - **Buy minutes for user**
        - [ ] Check additional packs count
        - [ ] Check additional packs number of minutes
        - **Buy more minutes for user**
            - [ ] Check additional packs
- **Buy subscription for Group**
    - **Buy minutes for group**
        - [ ] Check additional packs count
        - [ ] Check additional packs number of minutes
        - **Buy more minutes for group**
            - [ ] Check additional packs count
            - [ ] Check additional packs number of minutes
- **Buy minutes for a trial** (`/-/trials/new`)
  - [ ] Check additional packs count
  - [ ] Check additional packs number of minutes

#### Transferring packs (`Change linked namespace`):

- **User to Group**
  - [ ] Check additional packs count on User is zero
  - [ ] Check additional packs count and number of minutes on Group
  - **Buy more minutes for Group**
    - [ ] Check additional packs count
    - [ ] Check additional packs number of minutes
- **Group to User**
  - [ ] Check additional packs on Group is zero
  - [ ] Check additional packs count and number of minutes on User
  - **Buy more minutes for User**
    - [ ] Check additional packs count
    - [ ] Check additional packs number of minutes
- **Group to Group**
  - [ ] Check additional packs on originating Group is zero
  - [ ] Check additional packs count and number of minutes on target Group
  - **Buy more minutes for Group**
    - [ ] Check additional packs count
    - [ ] Check additional packs number of minutes


#### Notes

The syncing of packs happens asynchronously, so updates may take a few seconds whilst waiting for the Zuora callbacks to be processed.

There is a [known issue](https://gitlab.com/gitlab-org/customers-gitlab-com/-/issues/3597) when buying additional minutes for a subscription that has a future dated renewal - these tests will **not currently work** with those subscriptions

Story points: 1.0