richie-education 3.2.2-dev38 → 3.2.2-dev41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,26 +25,32 @@ type JWTPayload = {
25
25
  username: string;
26
26
  };
27
27
 
28
- /* All JWT tokens will expire the 02 Feb 2026 ! */
28
+ /* All JWT tokens will expire the 05 Feb 2027 ! */
29
29
  const JOANIE_DEV_DEMO_USER_JWT_TOKENS = {
30
- user0:
31
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6ImQwZmU1Zjg5ZjFhYTQ4YmM5NDhmNWU4ODFkNTNhNTU2IiwiZW1haWwiOiJwc21pdGhAZXhhbXBsZS5vcmciLCJsYW5ndWFnZSI6ImVuLXVzIiwidXNlcm5hbWUiOiJ1c2VyMCIsImZ1bGxfbmFtZSI6Ik90aGVyIE93bmVyIn0.eCawfaCzpO7U7iUPC1TE_XYDiRjq_crI93GqE8Fj8zc',
32
- user1:
33
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6ImIwYjk3YjZkZjFlMzRkMTg4NjFiMGFhMjcxYWI0YWU1IiwiZW1haWwiOiJzYW1wc29uYW5uYUBleGFtcGxlLm9yZyIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6InVzZXIxIiwiZnVsbF9uYW1lIjoiT3RoZXIgT3duZXIifQ.yd46_63iuw19zmzH8aVNRAVAvAE4VGH8W8BjmFs6PPU',
34
- user2:
35
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6ImNmYzY2OTNmY2Q5ZTRlZGViM2Y2NzU1MTZhNDIzMTdiIiwiZW1haWwiOiJsb3BlemFtYmVyQGV4YW1wbGUub3JnIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjIiLCJmdWxsX25hbWUiOiJPdGhlciBPd25lciJ9.TlFILOXY-wK29M_BUgDKgjdOovSfEIlw5cNXed6ZV3w',
36
- user3:
37
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6IjA4ZTcxZGJjYWIyMDRjMmZhZjgyMDVjZTRiNTliMjZiIiwiZW1haWwiOiJsb25nZWxpemFiZXRoQGV4YW1wbGUub3JnIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjMiLCJmdWxsX25hbWUiOiJPdGhlciBPd25lciJ9.8NxYyjc567lO2Yc7me-TQr8PNvKqB5VLRzHd1Z4vA4U',
38
- user4:
39
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6ImVmZGRkM2Q0YTdmZDQ4ZmFhYmZkM2Q2OTI4YzMwM2U4IiwiZW1haWwiOiJqb25lc2plbm5pZmVyQGV4YW1wbGUub3JnIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjQiLCJmdWxsX25hbWUiOiJPdGhlciBPd25lciJ9.Wn5CKuNPn0s4B_76Mxd3zTKqdUMaZGV456bhZ-fDe-o',
30
+ admin:
31
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6IjY2NWQ2N2Y3ZTU4MzQyMDc4YTg1MWNjNTFhNGMyMDg5IiwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6ImFkbWluIiwiZnVsbF9uYW1lIjoiIn0.yDC39WViIYl_pnJAjTedpVNBl14lSXZsXbDv-604VOo',
40
32
  organization_owner:
41
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6ImRiYmU2ZGExZjhmNDQzNDA4N2U2NzQ0YTIzM2JmNjFiIiwiZW1haWwiOiJkZXZlbG9wZXIrb3JnYW5pemF0aW9uX293bmVyQGV4YW1wbGUuY29tIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoib3JnYW5pemF0aW9uX293bmVyIiwiZnVsbF9uYW1lIjoiT3JnYSBPd25lciJ9.a6QjOAOxCw7ZFKvg8OCcUaW8Xhbmfuqy3cwIqUCPfzE',
33
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6IjlmY2EyZTA5MjcxYjRmZDQ5MTAzMGQ5YjJkMzk3MDhhIiwiZW1haWwiOiJkZXZlbG9wZXIrb3JnYW5pemF0aW9uX293bmVyQGV4YW1wbGUuY29tIiwibGFuZ3VhZ2UiOiJmci1mciIsInVzZXJuYW1lIjoib3JnYW5pemF0aW9uX293bmVyIiwiZnVsbF9uYW1lIjoiT3JnYSBPd25lciJ9.lf2ePQ-xZ-uHY6azh32kFIU3JvzKn3YJZZjmkApqBuE',
42
34
  student_user:
43
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6IjNhMGExYjM0OWEwNDQxNTg5ODU4NGUwZjMwNTc5M2EwIiwiZW1haWwiOiJkZXZlbG9wZXIrc3R1ZGVudF91c2VyQGV4YW1wbGUuY29tIiwibGFuZ3VhZ2UiOiJmci1mciIsInVzZXJuYW1lIjoic3R1ZGVudF91c2VyIiwiZnVsbF9uYW1lIjoiXHUwMGM5dHVkaWFudCJ9.3VvjPXwtuNA684hSIem3X2uFD-4WH8fipVDXMsi1cAc',
35
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImU0M2U3NDg4NDBlYzRkMTI4YTUzMTZmZDY0M2Y1ZWZjIiwiZW1haWwiOiJkZXZlbG9wZXIrc3R1ZGVudF91c2VyQGV4YW1wbGUuY29tIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoic3R1ZGVudF91c2VyIiwiZnVsbF9uYW1lIjoiXHUwMGM5dHVkaWFudCJ9.KViEfiPEv9UGq3nuYxoXBOcJDXxoBfr-sPZEqEJtve4',
44
36
  second_student_user:
45
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6Ijg5ZDIyNDJjODRkODRiNThiZWVkYjg1NmU2MGNiM2FiIiwiZW1haWwiOiJkZXZlbG9wZXIrc2Vjb25kX3N0dWRlbnRfdXNlckBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZnItZnIiLCJ1c2VybmFtZSI6InNlY29uZF9zdHVkZW50X3VzZXIiLCJmdWxsX25hbWUiOiJcdTAwYzl0dWRpYW50IDAwMiJ9.p5p4Ku0w8mHortWW9TYHTJgORF9wnfCpq-6pvBRjU0Y',
46
- admin:
47
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzcwMjIzOTY5LCJpYXQiOjE3Mzg2ODc5NjksImp0aSI6Ijk4M2UzNmI5MTUzODQ2Mjg4ZGMxNWNjOTAwNDgwMDA4IiwiZW1haWwiOiJhZG1pbkBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6ImFkbWluIiwiZnVsbF9uYW1lIjoiIn0.VuSqfh4l0vtIDSdkEgCNyciiOhlFlMAsf5u5snm2Avw',
37
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6IjIzZDI1OGI5ZmIxMzQyMWFiNDlmNDk1M2RjMjRkZjM5IiwiZW1haWwiOiJkZXZlbG9wZXIrc2Vjb25kX3N0dWRlbnRfdXNlckBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZnItZnIiLCJ1c2VybmFtZSI6InNlY29uZF9zdHVkZW50X3VzZXIiLCJmdWxsX25hbWUiOiJcdTAwYzl0dWRpYW50IDAwMiJ9.WOSPWNi9XRAap4Cd0Nzwp7A-3M1Rkp4A2k9yFI1sUdQ',
38
+ user4:
39
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImM0ZThjNDhmYTVhMjQyOTZhMzliMzQzNDI5MTYxYmU2IiwiZW1haWwiOiJkdXN0aW5tYXJ0aW5lekBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6InVzZXI0IiwiZnVsbF9uYW1lIjoiSmFyZWQgQmVuc29uIn0.J6q6Vgn-TJBCF1HJk7jf8OWjdI5zBjCHYAdoJeVB_Lk',
40
+ user5:
41
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImEzMzNhNjZjMTJmODQ5ZDNhY2FmMzFjNDc1NzVmZjFiIiwiZW1haWwiOiJnYWNvc3RhQGV4YW1wbGUub3JnIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjUiLCJmdWxsX25hbWUiOiJKZXJyeSBKYW1lcyJ9.E9Cs8ETQveN7VNq0gq3enIBFWbth3ESZ1JHrIaeQvkY',
42
+ user6:
43
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImNhZDAzOTFkMTk5NjQwNWQ5YThmZWYzMGQ4YzBiZTNiIiwiZW1haWwiOiJtb3JnYW5kb25uYUBleGFtcGxlLmNvbSIsImxhbmd1YWdlIjoiZnItZnIiLCJ1c2VybmFtZSI6InVzZXI2IiwiZnVsbF9uYW1lIjoiS3Jpc3RpbiBOb2JsZSJ9.FowqEHxSh72wGq52QTm6aG3U1GZfcJBQseiSPm4RXOc',
44
+ user7:
45
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImJhZjUxYjM4OWNhNzQwYWVhMzk3Y2EwY2QzOGFmYzczIiwiZW1haWwiOiJ0dXJuZXJtYWRpc29uQGV4YW1wbGUubmV0IiwibGFuZ3VhZ2UiOiJmci1mciIsInVzZXJuYW1lIjoidXNlcjciLCJmdWxsX25hbWUiOiJCZWNreSBWYXNxdWV6In0.mtbflgik7w7PEVJ-W6mjL2Wnq-bKrugGlWkkmc_jxxU',
46
+ user8:
47
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6IjM4NWNiZDljMTI4MjQxMDk4YjZlOGFmYjI2ZjA1Y2Y0IiwiZW1haWwiOiJyb2JlcnQ3NUBleGFtcGxlLm5ldCIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6InVzZXI4IiwiZnVsbF9uYW1lIjoiS2V2aW4gQm9vbmUifQ.c_mwfr72SC49hdNOupjgPlplPXBOrm0Gb5d5KuC6NI4',
48
+ user9:
49
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6IjI5MGVlN2UxZDQ5YTRjZTJiOTk1ZGMyOWExN2QyOTZiIiwiZW1haWwiOiJjbGFya2tpbWJlcmx5QGV4YW1wbGUubmV0IiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjkiLCJmdWxsX25hbWUiOiJKb2huIE93ZW5zIn0.ke-2g7942a2LgBR2OpMxYg-ozB7269ymWx8nzaJs-kc',
50
+ user10:
51
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6ImMxMWJhNDY3YWY0YTRjMWFhZDIwOTZhOGU1MDA3NTJiIiwiZW1haWwiOiJiZW5qYW1pbjU5QGV4YW1wbGUub3JnIiwibGFuZ3VhZ2UiOiJlbi11cyIsInVzZXJuYW1lIjoidXNlcjEwIiwiZnVsbF9uYW1lIjoiUm9uYWxkIEpvaG5zb24ifQ.c_AEOp6jD_K0xsJK4ZvkZcGnKlD3wmm_eJ2UEBGY5v0',
52
+ user11:
53
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxODAxODMyNDI4LCJpYXQiOjE3NzAyOTY0MjgsImp0aSI6Ijc5ZDg3NDkxZDU0NDRmMWVhZDAzYTYyMmQ0NWI0Y2E1IiwiZW1haWwiOiJhbWFuZGExMUBleGFtcGxlLm5ldCIsImxhbmd1YWdlIjoiZW4tdXMiLCJ1c2VybmFtZSI6InVzZXIxMSIsImZ1bGxfbmFtZSI6IkNoZXJ5bCBUYXlsb3IifQ.e6DEq75EHvCgtjf7aLr7Tk1DyZ9-4f-n-W8DXySCZZM',
48
54
  };
49
55
 
50
56
  export type DevDemoUser = keyof typeof JOANIE_DEV_DEMO_USER_JWT_TOKENS;
@@ -169,7 +169,7 @@ const BatchOrderForm = () => {
169
169
  signatory_email: '',
170
170
  signatory_telephone: '',
171
171
  nb_seats: 0,
172
- payment_method: PaymentMethod.PURCHASE_ORDER,
172
+ payment_method: undefined as any,
173
173
  funding_amount: 0,
174
174
  };
175
175
 
@@ -211,6 +211,7 @@ export const StepContent = ({
211
211
  value: organization.id,
212
212
  }));
213
213
  const [otherBillingAddress, setOtherBillingAddress] = useState(false);
214
+ const organizationId = form.watch('organization_id');
214
215
 
215
216
  return (
216
217
  <div className="step-content">
@@ -525,11 +526,14 @@ export const StepContent = ({
525
526
  </div>
526
527
  <FormattedMessage {...messages.recommandation} />
527
528
  <Select
528
- {...register('organization_id')}
529
529
  label={intl.formatMessage(messages.participatingOrganisations)}
530
530
  clearable
531
531
  options={orgOptions}
532
532
  className="recommandation"
533
+ value={organizationId ?? ''}
534
+ onChange={(e) => {
535
+ form.setValue('organization_id', e.target.value as string);
536
+ }}
533
537
  />
534
538
  </div>
535
539
  </div>
@@ -2,6 +2,7 @@ import { screen, within } from '@testing-library/react';
2
2
  import fetchMock from 'fetch-mock';
3
3
  import queryString from 'query-string';
4
4
  import userEvent from '@testing-library/user-event';
5
+ import { PaymentMethod } from 'components/PaymentInterfaces/types';
5
6
  import {
6
7
  RichieContextFactory as mockRichieContextFactory,
7
8
  PacedCourseFactory,
@@ -17,6 +18,7 @@ import {
17
18
  OfferingBatchOrderFactory,
18
19
  BatchOrderReadFactory,
19
20
  CredentialOrderFactory,
21
+ OrganizationFactory,
20
22
  } from 'utils/test/factories/joanie';
21
23
  import { CourseRun, NOT_CANCELED_ORDER_STATES, OrderState } from 'types/Joanie';
22
24
  import { Priority } from 'types';
@@ -82,9 +84,7 @@ describe('SaleTunnel', () => {
82
84
  const product = ProductFactory().one();
83
85
  const offering = OfferingFactory({ course, product, is_withdrawable: false }).one();
84
86
  const paymentPlan = PaymentPlanFactory().one();
85
- const offeringOrganization = OfferingBatchOrderFactory({
86
- product: { id: product.id, title: product.title },
87
- }).one();
87
+ const organizations = OrganizationFactory().many(3);
88
88
 
89
89
  fetchMock.get(
90
90
  `https://joanie.endpoint/api/v1.0/courses/${course.code}/products/${product.id}/`,
@@ -105,7 +105,7 @@ describe('SaleTunnel', () => {
105
105
  );
106
106
  fetchMock.get(
107
107
  `https://joanie.endpoint/api/v1.0/offerings/${offering.id}/get-organizations/`,
108
- offeringOrganization,
108
+ organizations,
109
109
  );
110
110
 
111
111
  render(<CourseProductItem productId={product.id} course={course} />, {
@@ -214,6 +214,33 @@ describe('SaleTunnel', () => {
214
214
  await user.type($nbParticipants, '13');
215
215
  expect($nbParticipants).toHaveValue(13);
216
216
 
217
+ // Financing step
218
+ await user.click(screen.getByRole('button', { name: 'Next' }));
219
+
220
+ const $purchaseOrderRadio = await screen.findByLabelText('Purchase order');
221
+ await user.click($purchaseOrderRadio);
222
+
223
+ const $fundingEntity = screen.getByLabelText('Entity name');
224
+ await user.type($fundingEntity, 'OPCO');
225
+ expect($fundingEntity).toHaveValue('OPCO');
226
+
227
+ const $fundingAmount = screen.getByLabelText('Amount covered');
228
+ await user.type($fundingAmount, '5000');
229
+ expect($fundingAmount).toHaveValue(5000);
230
+
231
+ const organizationComboboxes = screen.getAllByRole('combobox', {
232
+ name: 'Participating organizations',
233
+ });
234
+
235
+ const $organizationSelect = organizationComboboxes[organizationComboboxes.length - 1];
236
+ await user.click($organizationSelect);
237
+ const organizationMenu: HTMLDivElement = screen.getByRole('listbox', {
238
+ name: 'Participating organizations',
239
+ });
240
+ expectMenuToBeOpen(organizationMenu);
241
+ const firstOrg = organizations[0];
242
+ await user.click(screen.getByRole('option', { name: firstOrg.title }));
243
+
217
244
  // Submit the batch order
218
245
  const batchOrderRead = BatchOrderReadFactory().one();
219
246
  fetchMock.post('https://joanie.endpoint/api/v1.0/batch-orders/', batchOrderRead);
@@ -229,6 +256,39 @@ describe('SaleTunnel', () => {
229
256
  'href',
230
257
  `/en/dashboard/batch-orders/${batchOrderRead.id}`,
231
258
  );
259
+
260
+ // Verify the batch order payload contains all required and optional fields
261
+ const batchOrderCalls = fetchMock.calls('https://joanie.endpoint/api/v1.0/batch-orders/');
262
+ expect(batchOrderCalls).toHaveLength(1);
263
+ const batchOrderCall = batchOrderCalls[0];
264
+ const batchOrderRequest = batchOrderCall[1];
265
+ const batchOrderPayload = JSON.parse(batchOrderRequest?.body as string);
266
+
267
+ // Verify all payload fields
268
+ expect(batchOrderPayload).toEqual({
269
+ offering_id: offering.id,
270
+ company_name: 'GIP-FUN',
271
+ identification_number: '789 242 229 01694',
272
+ address: '61 Bis Rue de la Glaciere',
273
+ postcode: '75013',
274
+ city: 'Paris',
275
+ country: 'FR',
276
+ administrative_lastname: 'Doe',
277
+ administrative_firstname: 'John',
278
+ administrative_profession: 'HR',
279
+ administrative_email: 'john.doe@fun-mooc.com',
280
+ administrative_telephone: '+338203920103',
281
+ signatory_lastname: 'Doe',
282
+ signatory_firstname: 'John',
283
+ signatory_profession: 'CEO',
284
+ signatory_email: 'john.doe@fun-mooc.com',
285
+ signatory_telephone: '+338203920103',
286
+ nb_seats: '13',
287
+ payment_method: PaymentMethod.PURCHASE_ORDER,
288
+ funding_entity: 'OPCO',
289
+ funding_amount: '5000',
290
+ organization_id: firstOrg.id,
291
+ });
232
292
  }, 30000);
233
293
 
234
294
  it('tests the entire process of subscribing with a voucher from a batch order', async () => {
@@ -491,6 +551,12 @@ describe('SaleTunnel', () => {
491
551
  await user.type($nbParticipants, '13');
492
552
  expect($nbParticipants).toHaveValue(13);
493
553
 
554
+ // Financing step
555
+ await user.click(screen.getByRole('button', { name: 'Next' }));
556
+
557
+ const $purchaseOrderRadio = await screen.findByLabelText('Purchase order');
558
+ await user.click($purchaseOrderRadio);
559
+
494
560
  fetchMock.post('https://joanie.endpoint/api/v1.0/batch-orders/', {
495
561
  status: 422,
496
562
  body: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "richie-education",
3
- "version": "3.2.2-dev38",
3
+ "version": "3.2.2-dev41",
4
4
  "description": "A CMS to build learning portals for Open Education",
5
5
  "main": "sandbox/manage.py",
6
6
  "scripts": {