Skip to content

Commit

Permalink
fixes for dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanVss committed Nov 4, 2022
1 parent f3523ce commit a0bc91c
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 51 deletions.
10 changes: 5 additions & 5 deletions src/frontend/js/components/Dashboard/index.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { fireEvent, getByText, render, screen } from '@testing-library/react';
import { IntlProvider } from 'react-intl';
import { hydrate, QueryClientProvider } from '@tanstack/react-query';
import fetchMock from 'fetch-mock';
import { act } from '@testing-library/react-hooks';
import { act } from 'react-dom/test-utils';
import * as mockFactories from 'utils/test/factories';
import { PersistedClientFactory, QueryStateFactory, UserFactory } from 'utils/test/factories';
import createQueryClient from 'utils/react-query/createQueryClient';
Expand Down Expand Up @@ -105,15 +105,15 @@ describe('<Dashboard />', () => {
fetchMock.get('https://joanie.endpoint/api/addresses/', [address], { overwriteRoutes: true });
render(<DashboardWithUser user={user} />);
expectUrlMatchLocationDisplayed(DashboardPaths.COURSES);
expectBreadcrumbsToEqualParts(['Back', 'My courses']);
await expectBreadcrumbsToEqualParts(['Back', 'My courses']);

// Go to "My Preferences" route.
const link = screen.getByRole('link', { name: 'My preferences' });
await act(async () => {
fireEvent.click(link);
});
expectUrlMatchLocationDisplayed(DashboardPaths.PREFERENCES);
expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences']);

// Go to the address edit route.
const button = await screen.findByRole('button', { name: 'Edit' });
Expand All @@ -123,7 +123,7 @@ describe('<Dashboard />', () => {
expectUrlMatchLocationDisplayed(
DashboardPaths.PREFERENCES_ADDRESS_EDITION.replace(':addressId', address.id),
);
expectBreadcrumbsToEqualParts([
await expectBreadcrumbsToEqualParts([
'Back',
'My preferences',
'Edit address "' + address.title + '"',
Expand All @@ -135,7 +135,7 @@ describe('<Dashboard />', () => {
fireEvent.click(backButton);
});
expectUrlMatchLocationDisplayed(DashboardPaths.PREFERENCES);
expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences']);

// Click again on back button to get redirect to website's root.
expect(location.replace).not.toHaveBeenCalled();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ describe('<DashboardCreateAddress/>', () => {

// It doesn't show any errors.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();
expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);

// Submit the empty form to trigger validation errors.
const button = await screen.findByRole('button', { name: 'Create' });
Expand Down Expand Up @@ -136,7 +136,7 @@ describe('<DashboardCreateAddress/>', () => {
</QueryClientProvider>,
);
});
expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);

// Fill the form with random data.
const button = await screen.findByRole('button', { name: 'Create' });
Expand Down Expand Up @@ -191,7 +191,7 @@ describe('<DashboardCreateAddress/>', () => {
);
});

expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences', 'Create address']);

// Fill the form with random data.
const button = await screen.findByRole('button', { name: 'Create' });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ describe('<DashboardEditAddress/>', () => {

// It doesn't show any errors.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();
expectBreadcrumbsToEqualParts([
await expectBreadcrumbsToEqualParts([
'Back',
'My preferences',
'Edit address "' + address.title + '"',
Expand Down Expand Up @@ -157,15 +157,13 @@ describe('<DashboardEditAddress/>', () => {
).container;
});

// We are on the expected route.
await screen.findByText('Edit address "' + address.title + '"');
// It doesn't show any errors.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();
expectBreadcrumbsToEqualParts([
await expectBreadcrumbsToEqualParts([
'Back',
'My preferences',
'Edit address "' + address.title + '"',
]);
// It doesn't show any errors.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();

// The edit route API is called when submitting.
const button = await screen.findByRole('button', { name: 'Save updates' });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,9 @@ describe('<DashAddressesManagement/>', () => {
);
});


expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
// The empty placeholder is shown.
screen.getByText("You haven't created any addresses yet.");
await screen.findByText("You haven't created any addresses yet.");
// No error is shown.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ describe('<DahsboardEditCreditCard/>', () => {
);
});

expectBreadcrumbsToEqualParts([
await expectBreadcrumbsToEqualParts([
'Back',
'My preferences',
'Edit credit card "' + creditCard.title + '"',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ describe('<DashboardCreditCardsManagement/>', () => {
</QueryClientProvider>,
);
});
expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
await expectBreadcrumbsToEqualParts(['Back', 'My preferences']);
// The empty placeholder is shown.
screen.getByText("You haven't created any credit cards yet.");
await screen.findByText("You haven't created any credit cards yet.");
// No error is shown.
expect(screen.queryByText('An error occurred', { exact: false })).toBeNull();
});
Expand Down
14 changes: 8 additions & 6 deletions src/frontend/js/utils/test/expectBreadcrumbsToEqualParts.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { screen } from '@testing-library/react';
import { screen, waitFor } from '@testing-library/react';

export const expectBreadcrumbsToEqualParts = (parts: string[]) => {
const element = screen.getByTestId('dashboard-breadcrumbs');
const actualBreadcrumbs = Array.from(element.querySelectorAll('li')).map((listElement) => {
return listElement.textContent;
export const expectBreadcrumbsToEqualParts = async (parts: string[]) => {
await waitFor(() => {
const element = screen.getByTestId('dashboard-breadcrumbs');
const actualBreadcrumbs = Array.from(element.querySelectorAll('li')).map((listElement) => {
return listElement.textContent;
});
expect(actualBreadcrumbs).toEqual(parts);
});
expect(actualBreadcrumbs).toEqual(parts);
};
50 changes: 25 additions & 25 deletions src/frontend/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4039,24 +4039,24 @@ array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.0:
es-shim-unscopables "^1.0.0"

array.prototype.map@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.4.tgz#0d97b640cfdd036c1b41cfe706a5e699aa0711f2"
integrity sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA==
version "1.0.5"
resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.5.tgz#6e43c2fee6c0fb5e4806da2dc92eb00970809e55"
integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.19.0"
define-properties "^1.1.4"
es-abstract "^1.20.4"
es-array-method-boxes-properly "^1.0.0"
is-string "^1.0.7"

array.prototype.reduce@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f"
integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==
version "1.0.5"
resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac"
integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
es-abstract "^1.19.2"
define-properties "^1.1.4"
es-abstract "^1.20.4"
es-array-method-boxes-properly "^1.0.0"
is-string "^1.0.7"

Expand Down Expand Up @@ -4177,9 +4177,9 @@ babel-loader@9.0.1:
schema-utils "^4.0.0"

babel-loader@^8.0.0:
version "8.2.5"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e"
integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==
version "8.3.0"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8"
integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==
dependencies:
find-cache-dir "^3.3.1"
loader-utils "^2.0.0"
Expand Down Expand Up @@ -4742,9 +4742,9 @@ camelcase@^6.2.0:
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==

caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001400:
version "1.0.30001429"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz#70cdae959096756a85713b36dd9cb82e62325639"
integrity sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==
version "1.0.30001430"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz#638a8ae00b5a8a97e66ff43733b2701f81b101fa"
integrity sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg==

capture-exit@^2.0.0:
version "2.0.0"
Expand Down Expand Up @@ -5876,7 +5876,7 @@ error-stack-parser@^2.0.6:
dependencies:
stackframe "^1.3.4"

es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1, es-abstract@^1.20.4:
es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.5, es-abstract@^1.20.1, es-abstract@^1.20.4:
version "1.20.4"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861"
integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==
Expand Down Expand Up @@ -9033,9 +9033,9 @@ mem@^8.1.1:
mimic-fn "^3.1.0"

memfs@^3.1.2, memfs@^3.2.2:
version "3.4.9"
resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.9.tgz#403bb953776d72fef4e39e1197a25ffa156d143a"
integrity sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==
version "3.4.10"
resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.10.tgz#4cdff7cfd21351a85e11b08aa276ebf100210a4d"
integrity sha512-0bCUP+L79P4am30yP1msPzApwuMQG23TjwlwdHeEV5MxioDR1a0AgB0T9FfggU52eJuDCq8WVwb5ekznFyWiTQ==
dependencies:
fs-monkey "^1.0.3"

Expand Down Expand Up @@ -12972,7 +12972,7 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.9:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==

yargs-parser@^21.0.0:
yargs-parser@^21.0.0, yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
Expand Down Expand Up @@ -13004,17 +13004,17 @@ yargs@^16.2.0:
yargs-parser "^20.2.2"

yargs@^17.3.1:
version "17.6.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.1.tgz#712508771045019cda059bc1ba3ae091aaa1402e"
integrity sha512-leBuCGrL4dAd6ispNOGsJlhd0uZ6Qehkbu/B9KCR+Pxa/NVdNwi+i31lo0buCm6XxhJQFshXCD0/evfV4xfoUg==
version "17.6.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541"
integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==
dependencies:
cliui "^8.0.1"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.3"
y18n "^5.0.5"
yargs-parser "^21.0.0"
yargs-parser "^21.1.1"

yocto-queue@^0.1.0:
version "0.1.0"
Expand Down

0 comments on commit a0bc91c

Please sign in to comment.