Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/1508 rewrite page navigation #1682

Merged
merged 108 commits into from
Dec 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
bb5ba49
Removing dead/commented out code
Nov 13, 2023
9456dc2
Moving some code around, placing it where it belongs
Nov 13, 2023
8235744
Removing the unused altinnStudioTheme
Nov 13, 2023
1069152
Cleaning up some wrong theme usage, rewriting logo to not use css fil…
Nov 13, 2023
04b651f
Rewriting all the queries that ran in App.tsx to providers
Nov 13, 2023
100442c
Removing most error states, starting to rewrite error catching and ou…
Nov 13, 2023
fb8d6e0
More rewriting. Starting to think I should restructure the createCont…
Nov 13, 2023
02dcb26
More rewriting
Nov 15, 2023
693eb82
Cleaning up after merge
Nov 15, 2023
4c3a476
Making providers for KeepAlive and WindowTitle, so that App.tsx can b…
Nov 15, 2023
3c51d61
More cleanup, trying to pull the complexity out of Entrypoint.tsx and…
Nov 15, 2023
067d5db
Rewriting app texts from redux selectors to hooks, fixing cyclic impo…
Nov 16, 2023
60b58ac
Fixing returnInstanceMetaDataObject(), now called getSummaryDataObjec…
Nov 16, 2023
7851ff0
Rewriting to use createStrictQueryContext() a few places
Nov 16, 2023
9196deb
Rewriting createStrictContext/createLaxContext and createStrictQueryC…
Nov 16, 2023
c5fb9a7
Attempting a rewrite of party-related states into PartiesProvider and…
Nov 17, 2023
ba7d77a
Fixing unit tests, rendering the default logo when application metada…
Nov 20, 2023
8b27c1e
Refactoring the Header component, and partly the PresentationComponen…
Nov 20, 2023
9699ed1
Moving mock generators
Nov 20, 2023
cb70736
Fixing the rest of the unit tests
Nov 20, 2023
7fb90f3
Making sure we instantiate when there are no active instances, preven…
Nov 20, 2023
8d8f363
Fixing header font color
Nov 20, 2023
73ca841
Removing layout-sets.ts, v4 only supports apps with layout-sets now
Nov 21, 2023
94263c1
Updating the page-order-with-dynamics.ts test. The app is no longer s…
Nov 21, 2023
03d1ad6
Merge branch 'main' into refactor/app-flow
Nov 21, 2023
e562a65
Re-introducing the fix for re-fetching languages and injecting them i…
Nov 21, 2023
4fa34d5
Removing duplicate import after merge from main
Nov 21, 2023
6989636
The org name should be displayed in the app header by default
Nov 21, 2023
9d41d2c
Moving language and text-resource related code to src/features/langua…
Nov 22, 2023
dae2777
Fixing up party selection and related code.
Nov 22, 2023
240db40
Removing the language state properly, moving it into LanguageProvider
Nov 23, 2023
7c4536b
Various cleanup
Nov 23, 2023
a39f028
Mending tests
Nov 23, 2023
c36ab2d
Moving LegacyRoutes back in to the regular router
Nov 23, 2023
826a453
Resolving TODO in submitFormDataSagas
Nov 23, 2023
65c1ce3
Fixing a crash in formatting.ts because of an untyped value (any)
Nov 23, 2023
3ce0720
Merge branch 'main' into refactor/app-flow
Nov 23, 2023
dcf1063
Fixes after merge from main
Nov 23, 2023
6cf6ab1
Allowing for multiple date formats. Potential bug reported here: http…
Nov 23, 2023
f670376
Disabling the custom receipt test, as it broke (again)
Nov 23, 2023
209f1fc
Removing debug statement
Nov 23, 2023
b7fbeae
Running eslint --fix
Nov 23, 2023
2a6b612
Fixing the party selection test to also work on tt02
Nov 24, 2023
5185983
refactor: Add routes for pageLayouts. Show pages of a form with said …
mikaelrss Nov 14, 2023
958057e
wip: Add taskId to url navigation
mikaelrss Nov 21, 2023
7874486
Add navigateToCurrentProcess button
mikaelrss Nov 22, 2023
90506af
use hooks instead of redux to get the current page order
mikaelrss Nov 22, 2023
bedad71
refactor: get pageorder by using hook instead of redux
mikaelrss Nov 22, 2023
6c75174
refactor: fix showing of confirmation, receipt, and feedback steps. F…
mikaelrss Nov 23, 2023
064fc23
refactor: fix returnToView. Add state to context
mikaelrss Nov 23, 2023
3147771
Add returnToView and scrollPosition to PageNavigationContext
mikaelrss Nov 24, 2023
0e0320a
Add support for navigating users to the last visited page stored in l…
mikaelrss Nov 24, 2023
bf5b8b9
wip: fix tests after refactor of navigation
mikaelrss Nov 24, 2023
554fbcc
Increasing the default timeouts, tests were timing out on github
Nov 24, 2023
070231c
Add UiConfigContext. Fix more tests after refactoring navigation
mikaelrss Nov 24, 2023
299ec5f
Restructuring the login and party-selection code in the double-signin…
Nov 24, 2023
7f658de
Fixing the broken SVG re-coloring
Nov 24, 2023
8041d2a
fix unit tests after navigation refactor
mikaelrss Nov 25, 2023
0361a4f
refactor: e2e-tests after refactoring to use router based page naviga…
mikaelrss Nov 26, 2023
b48e293
fix: bug with layouts becoming hidden with any expression
mikaelrss Nov 26, 2023
cdfd363
Using receipt.receipt as the default header, not receipt.title
Nov 27, 2023
0f661b9
Adjusting the code to compare SVGs
Nov 27, 2023
02af657
Merge branch 'main' into refactor/app-flow
Nov 27, 2023
2933704
wip: refactor layoutsettings to custom context
mikaelrss Nov 27, 2023
db3864f
Merge remote-tracking branch 'origin/refactor/app-flow' into refactor…
mikaelrss Nov 27, 2023
0cdcf37
Fixing DevTools
Nov 27, 2023
eb2277f
Rewriting getAllowAnonymous to be a hook instead of a selector. Now i…
Nov 27, 2023
e9d59e2
Setting anonymous/partyId in redux while we're still limited by sagas
Nov 27, 2023
0dfbd24
refactor: adapt code after merging with new app-flow
mikaelrss Nov 27, 2023
683907a
refactor: add page routing for stateless apps
mikaelrss Nov 28, 2023
0b1e69c
Merge remote-tracking branch 'origin/refactor/app-flow' into refactor…
mikaelrss Nov 28, 2023
b193e28
fix: remove keepScroll functionality until validation is in place
mikaelrss Nov 28, 2023
7b01d9b
fix: issue with back to summary page being shown after navigating to …
mikaelrss Nov 29, 2023
f9cd8e1
remove debug statements
mikaelrss Nov 29, 2023
16a7ab0
fix: bug with add items in sub group repeating groups
mikaelrss Nov 29, 2023
35ba4cf
fix: bug with datamodel not being accessible during confirmation/rece…
mikaelrss Nov 29, 2023
8bdd8b7
fix: summary tests
mikaelrss Nov 29, 2023
ce059ea
fix: temporarily skip validation cypress tests while waiting for 1506
mikaelrss Nov 29, 2023
f644d5c
fix: remove currentView from devtools
mikaelrss Nov 29, 2023
70549f3
fix: remove use of redux based currentView in repGroupDeleteRow
mikaelrss Nov 30, 2023
ee82148
fix: rewrite PresentationComponent to have prop stating whether to re…
mikaelrss Nov 30, 2023
44beede
fix: unit tests after refactor
mikaelrss Dec 1, 2023
ce0e470
fix: bug with mergeAndSort function
mikaelrss Dec 3, 2023
de7a4ee
fix: issue with validation currentView in GenericComponent
mikaelrss Dec 3, 2023
2754eac
refactor: remove unused sagas related to page navigation
mikaelrss Dec 3, 2023
c455f42
Merge remote-tracking branch 'origin/main' into refactor/1508-rewrite…
mikaelrss Dec 3, 2023
7f394e8
fix: bug with navigating away from instantiation-selection
mikaelrss Dec 3, 2023
a8d9ffe
fix: bug with RepeatingGroupsLikertContainer tests
mikaelrss Dec 3, 2023
f1943ea
fix: issue with receipt redirecting
mikaelrss Dec 3, 2023
78c3d9d
fix: redirect to page and processEnd. Use currentPage from url in Exp…
mikaelrss Dec 4, 2023
b941cc7
Update process mutation data when navigating to next step
mikaelrss Dec 4, 2023
cdf3799
fix: bug with overwriting queryData in InstanceContext
mikaelrss Dec 4, 2023
5288327
fix: unit test for NavigationBar component
mikaelrss Dec 4, 2023
b6a30a9
refactor: types on ProcessContext
mikaelrss Dec 5, 2023
62e2d50
refactor: use lang component for generic help page when navigating
mikaelrss Dec 5, 2023
babad1b
refactor: remove uiconfig options that are available in UiConfiContex…
mikaelrss Dec 5, 2023
53c1932
refactor: cleanup PR
mikaelrss Dec 5, 2023
8bef509
fix: redirect to start for stateless-apps on invalid pages
mikaelrss Dec 6, 2023
3400fc6
fix: add process task error messages for all types of process steps
mikaelrss Dec 6, 2023
931fe9f
fix: remove unnecessary routes in stateless apps
mikaelrss Dec 6, 2023
6b91639
fix: use enums to represent fixed routes
mikaelrss Dec 6, 2023
689297b
fix: issue with useLayoutQuery
mikaelrss Dec 6, 2023
a461ea6
refactor: move LayoutProvider, UiConfigProvider and LayoutSettingsPro…
mikaelrss Dec 6, 2023
3215ccc
docs: add comment about useTaskType
mikaelrss Dec 6, 2023
e88ba0f
refactor: add test for bug with validation and new page navigation
mikaelrss Dec 6, 2023
903ab76
fix: remove unnecessary redirect to confirmation page from receipt page
mikaelrss Dec 6, 2023
b1ab223
Merge remote-tracking branch 'origin/main' into refactor/1508-rewrite…
mikaelrss Dec 6, 2023
661bdc6
refactor: remove duplicate import
mikaelrss Dec 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { Navigate, Route, Routes } from 'react-router-dom';

import { ProcessWrapper } from 'src/components/wrappers/ProcessWrapper';
import { ProcessWrapperWrapper } from 'src/components/wrappers/ProcessWrapper';
import { Entrypoint } from 'src/features/entrypoint/Entrypoint';
import { InstanceProvider } from 'src/features/instance/InstanceContext';
import { PartySelection } from 'src/features/instantiate/containers/PartySelection';
Expand All @@ -10,7 +10,7 @@ import { InstanceSelectionWrapper } from 'src/features/instantiate/selection/Ins
export const App = () => (
<Routes>
<Route
path='/'
path='*'
element={<Entrypoint />}
/>
<Route
Expand All @@ -22,10 +22,10 @@ export const App = () => (
element={<PartySelection />}
/>
<Route
path='/instance/:partyId/:instanceGuid'
path='/instance/:partyId/:instanceGuid/*'
element={
<InstanceProvider>
<ProcessWrapper />
<ProcessWrapperWrapper />
</InstanceProvider>
}
/>
Expand Down
59 changes: 37 additions & 22 deletions src/__mocks__/getAttachmentsMock.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { v4 as uuidv4 } from 'uuid';

import type { UploadedAttachment } from 'src/features/attachments';
import type { IData } from 'src/types/shared';

const getRandomFileSize = () => Math.floor(Math.random() * (2500 - 250 + 1)) + 250;

Expand All @@ -13,29 +14,43 @@ export const getAttachmentsMock = ({ count = 3, fileSize }: IGetAttachmentsMock
const out: UploadedAttachment[] = [];

for (let i = 0; i < count; i++) {
out.push({
error: undefined,
uploaded: true,
deleting: false,
updating: false,
data: {
id: uuidv4(),
dataType: 'file',
size: fileSize || getRandomFileSize(),
filename: `attachment-name-${i}`,
tags: [`attachment-tag-${i}`],
created: new Date().toISOString(),
createdBy: 'test',
lastChanged: new Date().toISOString(),
lastChangedBy: 'test',
blobStoragePath: 'test',
contentType: 'test',
locked: false,
instanceGuid: 'test',
refs: [],
},
});
out.push(
getAttachmentMock({
data: getAttachmentDataMock({
size: fileSize || getRandomFileSize(),
filename: `attachment-name-${i}`,
tags: [`attachment-tag-${i}`],
}),
}),
);
}

return out;
};

export const getAttachmentDataMock = (overrides: Partial<IData> = {}): IData => ({
id: uuidv4(),
dataType: 'file',
size: getRandomFileSize(),
filename: 'attachment-name',
tags: ['attachment-tag-'],
created: new Date().toISOString(),
createdBy: 'test',
lastChanged: new Date().toISOString(),
lastChangedBy: 'test',
blobStoragePath: 'test',
contentType: 'test',
locked: false,
instanceGuid: 'test',
refs: [],
...overrides,
});

export const getAttachmentMock = (overrides: Partial<UploadedAttachment> = {}): UploadedAttachment => ({
error: undefined,
uploaded: true,
deleting: false,
updating: false,
data: getAttachmentDataMock(overrides.data),
...overrides,
});
6 changes: 6 additions & 0 deletions src/components/form/Form.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { getFormLayoutStateMock } from 'src/__mocks__/getFormLayoutStateMock';
import { getInitialStateMock } from 'src/__mocks__/initialStateMock';
import { Form } from 'src/components/form/Form';
import { renderWithInstanceAndLayout } from 'src/test/renderWithProviders';
import { PageNavigationRouter } from 'src/test/routerUtils';
import type { CompExternal, ILayout } from 'src/layout/layout';
import type { CompSummaryExternal } from 'src/layout/Summary/config.generated';
import type { RootState } from 'src/redux/store';
Expand Down Expand Up @@ -219,6 +220,11 @@ describe('Form', () => {
async function render(layout = mockComponents, customState: Partial<IRuntimeState> = {}) {
await renderWithInstanceAndLayout({
renderer: () => <Form />,
router: PageNavigationRouter('FormLayout'),
queries: {
fetchLayouts: () => Promise.resolve({}),
fetchLayoutSettings: () => Promise.resolve({ pages: { order: ['FormLayout', '2', '3'] } }),
},
reduxState: {
...getInitialStateMock(),
...customState,
Expand Down
34 changes: 16 additions & 18 deletions src/components/form/Form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,47 +8,45 @@ import { ErrorReport } from 'src/components/message/ErrorReport';
import { ReadyForPrint } from 'src/components/ReadyForPrint';
import { useLanguage } from 'src/features/language/useLanguage';
import { useAppSelector } from 'src/hooks/useAppSelector';
import { useNavigatePage } from 'src/hooks/useNavigatePage';
import { GenericComponent } from 'src/layout/GenericComponent';
import { getFieldName } from 'src/utils/formComponentUtils';
import { extractBottomButtons, hasRequiredFields } from 'src/utils/formLayout';
import { useExprContext } from 'src/utils/layout/ExprContext';
import { getFormHasErrors, missingFieldsInLayoutValidations } from 'src/utils/validation/validation';

export function Form() {
const nodes = useExprContext();
const langTools = useLanguage();
const { currentPageId } = useNavigatePage();
const validations = useAppSelector((state) => state.formValidations.validations);
const hasErrors = useAppSelector((state) => getFormHasErrors(state.formValidations.validations));
const page = nodes?.current();
const pageKey = page?.top.myKey;
const nodes = useExprContext();

const [mainNodes, errorReportNodes] = React.useMemo(() => {
if (!page) {
return [[], []];
}
return hasErrors ? extractBottomButtons(page) : [page.children(), []];
}, [page, hasErrors]);
const page = nodes?.all?.()?.[currentPageId];
const hasErrors = useAppSelector((state) => getFormHasErrors(state.formValidations.validations));

const requiredFieldsMissing = React.useMemo(() => {
if (validations && pageKey && validations[pageKey]) {
if (validations && validations[currentPageId]) {
const requiredValidationTextResources: string[] = [];
page.flat(true).forEach((node) => {
page?.flat(true).forEach((node) => {
const trb = node.item.textResourceBindings;
const fieldName = getFieldName(trb, langTools);
if ('required' in node.item && node.item.required && trb && 'requiredValidation' in trb) {
requiredValidationTextResources.push(langTools.langAsString(trb.requiredValidation, [fieldName]));
}
});

return missingFieldsInLayoutValidations(validations[pageKey], requiredValidationTextResources, langTools);
return missingFieldsInLayoutValidations(validations[currentPageId], requiredValidationTextResources, langTools);
}

return false;
}, [validations, pageKey, page, langTools]);
}, [validations, currentPageId, page, langTools]);

if (!page) {
return null;
}
const [mainNodes, errorReportNodes] = React.useMemo(() => {
if (!page) {
return [[], []];
}
return hasErrors ? extractBottomButtons(page) : [page.children(), []];
}, [page, hasErrors]);

return (
<>
Expand All @@ -63,7 +61,7 @@ export function Form() {
spacing={3}
alignItems='flex-start'
>
{mainNodes.map((n) => (
{mainNodes?.map((n) => (
<GenericComponent
key={n.item.id}
node={n}
Expand Down
20 changes: 8 additions & 12 deletions src/components/message/ErrorReport.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ import { createSelector } from 'reselect';
import { FullWidthWrapper } from 'src/components/form/FullWidthWrapper';
import classes from 'src/components/message/ErrorReport.module.css';
import { FormLayoutActions } from 'src/features/form/layout/formLayoutSlice';
import { usePageNavigationContext } from 'src/features/form/layout/PageNavigationContext';
import { Lang } from 'src/features/language/Lang';
import { useAppDispatch } from 'src/hooks/useAppDispatch';
import { useAppSelector } from 'src/hooks/useAppSelector';
import { useNavigatePage } from 'src/hooks/useNavigatePage';
import { getParsedLanguageFromText } from 'src/language/sharedLanguage';
import { AsciiUnitSeparator } from 'src/layout/FileUpload/utils/asciiUnitSeparator';
import { GenericComponent } from 'src/layout/GenericComponent';
Expand Down Expand Up @@ -39,7 +41,8 @@ const selectMappedUnmappedErrors = createSelector(selectValidations, createMappe

export const ErrorReport = ({ nodes }: IErrorReportProps) => {
const dispatch = useAppDispatch();
const currentView = useAppSelector((state) => state.formLayout.uiConfig.currentView);
const { currentPageId, navigateToPage } = useNavigatePage();
const { setFocusId } = usePageNavigationContext();
const [errorsMapped, errorsUnmapped] = useAppSelector(selectMappedUnmappedErrors);
const allNodes = useExprContext();
const hasErrors = errorsUnmapped.length > 0 || errorsMapped.length > 0;
Expand All @@ -59,12 +62,8 @@ export const ErrorReport = ({ nodes }: IErrorReportProps) => {
return;
}

if (currentView !== error.layout) {
dispatch(
FormLayoutActions.updateCurrentView({
newView: error.layout,
}),
);
if (currentPageId !== error.layout) {
navigateToPage(error.layout);
}

const allParents = componentNode?.parents() || [];
Expand Down Expand Up @@ -116,17 +115,14 @@ export const ErrorReport = ({ nodes }: IErrorReportProps) => {
FormLayoutActions.updateRepeatingGroupsEditIndex({
group: parentNode.item.id,
index: childNode.rowIndex,
currentPageId,
}),
);
}
}

// Set focus
dispatch(
FormLayoutActions.updateFocus({
focusComponentId: error.componentId,
}),
);
setFocusId(error.componentId);
};

const errorMessage = (message: string) =>
Expand Down
60 changes: 23 additions & 37 deletions src/components/presentation/NavBar.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,107 +5,94 @@ import { userEvent } from '@testing-library/user-event';
import mockAxios from 'jest-mock-axios';

import { getFormLayoutStateMock } from 'src/__mocks__/getFormLayoutStateMock';
import { getUiConfigStateMock } from 'src/__mocks__/getUiConfigStateMock';
import { getInitialStateMock } from 'src/__mocks__/initialStateMock';
import { NavBar } from 'src/components/presentation/NavBar';
import { renderWithoutInstanceAndLayout } from 'src/test/renderWithProviders';
import { mockWindow } from 'src/test/mockWindow';
import { renderWithInstanceAndLayout } from 'src/test/renderWithProviders';
import { ProcessTaskType } from 'src/types';
import type { IRawTextResource } from 'src/features/language/textResources';
import type { PresentationType } from 'src/types';
import type { IAppLanguage } from 'src/types/shared';

afterEach(() => mockAxios.reset());

interface RenderNavBarProps {
showBackArrow: boolean;
currentPageId?: string;
hideCloseButton: boolean;
showLanguageSelector: boolean;
languageResponse?: IAppLanguage[];
showLanguageSelector: boolean;
textResources?: IRawTextResource[];
type?: ProcessTaskType | PresentationType;
initialPage?: string;
}

const render = async ({
hideCloseButton,
showBackArrow,
showLanguageSelector,
languageResponse,
type = ProcessTaskType.Data,
initialPage,
textResources = [],
}: RenderNavBarProps) => {
const mockClose = jest.fn();
const mockBack = jest.fn();
const mockAppLanguageChange = jest.fn();

await renderWithoutInstanceAndLayout({
renderer: () => (
<NavBar
handleClose={mockClose}
handleBack={mockBack}
showBackArrow={showBackArrow}
/>
),
await renderWithInstanceAndLayout({
renderer: () => <NavBar type={type} />,
reduxState: {
...getInitialStateMock(),
formLayout: getFormLayoutStateMock({
uiConfig: getUiConfigStateMock({
hideCloseButton,
showLanguageSelector,
}),
}),
formLayout: getFormLayoutStateMock({}),
},
initialPage,
queries: {
fetchAppLanguages: () =>
languageResponse ? Promise.resolve(languageResponse) : Promise.reject(new Error('No languages mocked')),
fetchTextResources: () => Promise.resolve({ language: 'nb', resources: textResources }),
fetchLayoutSettings: () =>
Promise.resolve({ pages: { hideCloseButton, showLanguageSelector, order: ['1', '2', '3'] } }),
},
reduxGateKeeper: (action) => 'type' in action && action.type === 'deprecated/setCurrentLanguage',
});

return { mockClose, mockBack, mockAppLanguageChange };
};

describe('NavBar', () => {
const { mockAssign } = mockWindow();
it('should render nav', async () => {
await render({
hideCloseButton: true,
showBackArrow: false,
showLanguageSelector: false,
});
screen.getByRole('navigation', { name: /Appnavigasjon/i });
});

it('should render close button', async () => {
const { mockClose } = await render({
await render({
hideCloseButton: false,
showBackArrow: false,
showLanguageSelector: false,
});
const closeButton = screen.getByRole('button', { name: /Lukk Skjema/i });
await userEvent.click(closeButton);
expect(mockClose).toHaveBeenCalled();
expect(mockAssign).toHaveBeenCalled();
});

it('should hide close button and back button', async () => {
await render({
hideCloseButton: true,
showBackArrow: false,
showLanguageSelector: false,
});
expect(screen.queryAllByRole('button')).toHaveLength(0);
expect(screen.queryByTestId('form-back-button')).toBeNull();
});

it('should render back button', async () => {
const { mockBack } = await render({
await render({
hideCloseButton: true,
showBackArrow: true,
showLanguageSelector: false,
type: ProcessTaskType.Data,
initialPage: 'Task_1/2',
});
const backButton = screen.getByTestId('form-back-button');
await userEvent.click(backButton);
expect(mockBack).toHaveBeenCalled();
expect(screen.getByTestId('form-back-button')).toBeInTheDocument();
});
it('should render and change app language', async () => {
await render({
hideCloseButton: false,
showBackArrow: true,
showLanguageSelector: true,
languageResponse: [{ language: 'en' }, { language: 'nb' }],
});
Expand All @@ -122,7 +109,6 @@ describe('NavBar', () => {
it('should render app language with custom labels', async () => {
await render({
hideCloseButton: false,
showBackArrow: true,
showLanguageSelector: true,
textResources: [
{ id: 'language.selector.label', value: 'Velg språk test' },
Expand Down
Loading