Skip to content

Commit

Permalink
Merge branch 'main' into fix/flaky-unit-test-usetablesorting
Browse files Browse the repository at this point in the history
  • Loading branch information
framitdavid committed Sep 25, 2024
2 parents 06f7aa8 + 49d1da7 commit df831e2
Show file tree
Hide file tree
Showing 49 changed files with 672 additions and 100 deletions.
4 changes: 2 additions & 2 deletions frontend/app-development/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"@studio/pure-functions": "workspace:^",
"axios": "1.7.7",
"classnames": "2.5.1",
"i18next": "23.14.0",
"i18next": "23.15.1",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-i18next": "15.0.1",
Expand All @@ -23,7 +23,7 @@
"devDependencies": {
"cross-env": "7.0.3",
"jest": "29.7.0",
"typescript": "5.5.4",
"typescript": "5.6.2",
"webpack": "5.94.0",
"webpack-dev-server": "5.1.0"
},
Expand Down
2 changes: 1 addition & 1 deletion frontend/app-preview/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"devDependencies": {
"cross-env": "7.0.3",
"jest": "29.7.0",
"typescript": "5.5.4",
"typescript": "5.6.2",
"webpack": "5.94.0",
"webpack-dev-server": "5.1.0"
},
Expand Down
2 changes: 1 addition & 1 deletion frontend/dashboard/components/OrgRepoList/OrgReposList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export const OrgReposList = ({ user, organizations }: OrgReposListProps) => {
uid: uid as number,
keyword: DATA_MODEL_REPO_IDENTIFIER,
});
const totalRows = repoResults?.totalCount - dataModelsResults?.totalCount ?? 0;
const totalRows = repoResults?.totalCount - dataModelsResults?.totalCount || 0;

const { data: starredRepos = [], isPending: hasPendingStarredRepos } = useStarredReposQuery();
const reposIncludingStarredData = useAugmentReposWithStarred({
Expand Down
2 changes: 1 addition & 1 deletion frontend/dashboard/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"devDependencies": {
"cross-env": "7.0.3",
"jest": "29.7.0",
"typescript": "5.5.4",
"typescript": "5.6.2",
"webpack": "5.94.0",
"webpack-dev-server": "5.1.0"
},
Expand Down
25 changes: 15 additions & 10 deletions frontend/language/src/nb.json
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@
"general.choose_method": "Velg metode",
"general.close": "Lukk",
"general.close_item": "Lukk {{item}}",
"general.component": "Komponent",
"general.contact": "Kontakt og hjelp",
"general.create_new": "Lag ny",
"general.data_model": "datamodell",
Expand All @@ -267,6 +268,7 @@
"general.for": "for",
"general.help": "Hjelp",
"general.layout": "layout",
"general.layout_set": "Sidegruppe",
"general.layout_sets": "Sidegrupper",
"general.loading": "Laster...",
"general.next": "Neste",
Expand Down Expand Up @@ -1053,12 +1055,12 @@
"ux_editor.component_group_deletion_text": "Er du sikker på at du vil slette denne gruppen?\nAlle komponenter i denne gruppen blir også slettet",
"ux_editor.component_help_text.Accordion": "Med komponenten Trekkspilliste kan du presentere mye innhold på liten plass i en eller flere rader. Brukerne kan klikke på hele raden, og åpne eller lukke visningen av innholdet under.",
"ux_editor.component_help_text.AccordionGroup": "En samling med trekkspillister som vises vertikalt. Brukes for å gruppere lister som hører sammen.",
"ux_editor.component_help_text.ActionButton": "Knapp for å utløse en bestemt handling knyttet til det steget i prosessen som sluttbrukeren befinner seg på. Eksempler inkluderer 'sign', 'confirm', 'reject'.",
"ux_editor.component_help_text.ActionButton": "Knapp for å utløse en bestemt handling knyttet til det steget i prosessen sluttbrukeren befinner seg på. Steget kan være for eksempel være signering, bekreftelse eller avvisning.",
"ux_editor.component_help_text.Address": "Komponent for å fylle ut adresse. Poststedet blir slått opp automatisk, basert på postnummeret.",
"ux_editor.component_help_text.AddressComponent": "Komponent for å fylle ut adresse. Poststedet blir slått opp automatisk, basert på postnummeret.",
"ux_editor.component_help_text.Alert": "Komponenten kan brukes til å vise en melding med ulike alvorlighetsgrader.",
"ux_editor.component_help_text.AttachmentList": "Viser en liste over vedlegg som er lastet opp på eksemplaret for det prosess-steget sluttbruker er på.",
"ux_editor.component_help_text.Button": "Knapp for å sende inn skjema",
"ux_editor.component_help_text.Button": "Knapp for å sende inn et skjema eller avslutte. Du kan sette et eget navn på knappen",
"ux_editor.component_help_text.ButtonGroup": "En samling knapper som vises side om side horisontalt. Brukes for å gruppere knapper som hører sammen.",
"ux_editor.component_help_text.Checkboxes": "Du bruker avmerkingsbokser når brukeren skal kunne velge flere svar. Hvis brukeren bare skal velge ett av to alternativer, bruker du radioknapper.",
"ux_editor.component_help_text.Datepicker": "Datovelger som tilbyr en kalender brukeren kan velge dato fra.",
Expand All @@ -1078,15 +1080,15 @@
"ux_editor.component_help_text.List": "Listekomponenten kan brukes til å presentere innholdsrike data til bruker i tabellformat. Hver rad i tabellen er velgbar. Komponenten støtter søk, sortering og paginering.",
"ux_editor.component_help_text.Map": "Kartkomponent der brukeren kan angi posisjon i kartet.",
"ux_editor.component_help_text.MultipleSelect": "Nedtrekksliste med flere valg brukes i tilfeller der brukeren skal velge flere alternativ. Det samme gjelder avmerkingsbokser, så vær bevisst på når du bruker hvilken.",
"ux_editor.component_help_text.NavigationBar": "Navigasjonsbar gir enkel tilgang til alle sider i en app. Alle sider i appen blir listet opp, så denne komponenten egner seg derfor ikke til bruk sammen med sporvalg.",
"ux_editor.component_help_text.NavigationButtons": "Knapp for å navigere frem/tilbake mellom skjemasider.",
"ux_editor.component_help_text.NavigationBar": "Navigasjonsfeltet gir enkel tilgang til alle sider i en app. Alle sider i appen blir listet opp, så denne komponenten egner seg derfor ikke til bruk sammen med sporvalg.",
"ux_editor.component_help_text.NavigationButtons": "Knapper for å navigere frem/tilbake mellom skjemasider. Blir automatisk lagt til når du oppretter nye sider",
"ux_editor.component_help_text.Panel": "Bruk Panel-komponenten til å vise viktig informasjon til brukeren.",
"ux_editor.component_help_text.Paragraph": "Avsnitt med tekst.",
"ux_editor.component_help_text.PrintButton": "Knapp for å starte utskrift av siden fra nettleseren",
"ux_editor.component_help_text.RadioButtons": "Bruk radioknapper når du vil at brukeren kun skal kunne svare på ett av alternativene. Om brukeren skal kunne svare på flere må du bruke avmerkingsbokser. Er det veldig mange alternativer kan det lønne seg å bruke en nedtrekksmeny.",
"ux_editor.component_help_text.Summary": "Komponent som viser informasjon som oppsummering. Brukes ofte på slutten av et skjema for å vise brukeren hva som er fylt ut.",
"ux_editor.component_help_text.TextArea": "Du bruker Stort tekstfelt når du vil at brukerne skal skrive litt lengre tekst.",
"ux_editor.component_help_text.default": "Det kommer mer informasjon om denne komponenten senere.",
"ux_editor.component_help_text.default": "Knapp uten forhåndsdefinert handling eller navn. Du kan for eksempel bruke den i egendefinert kvittering eller PDF.",
"ux_editor.component_help_text_general_title": "Åpne hjelpetekst for komponenten",
"ux_editor.component_other_properties_title": "Andre innstillinger",
"ux_editor.component_properties.action": "Handling",
Expand Down Expand Up @@ -1275,6 +1277,9 @@
"ux_editor.component_properties.tabs": "Faner",
"ux_editor.component_properties.tagName": "Tag-navn",
"ux_editor.component_properties.target": "Mål",
"ux_editor.component_properties.target_description": "Mål for oppsummeringskomponenten",
"ux_editor.component_properties.target_invalid": "Ugyldig mål",
"ux_editor.component_properties.target_type": "Type",
"ux_editor.component_properties.taskId": "Oppgave-ID",
"ux_editor.component_properties.timeStamp": "Inkluder tidsstempel i dato (på som standard)",
"ux_editor.component_properties.triggers": "Feltet skal utløse:",
Expand Down Expand Up @@ -1307,11 +1312,11 @@
"ux_editor.component_title.AttachmentListOrPdf_error": "Du må velge minst ett vedlegg eller PDF",
"ux_editor.component_title.AttachmentList_error": "Du må velge minst ett vedlegg",
"ux_editor.component_title.AttachmentList_legend": "Vedleggsliste",
"ux_editor.component_title.Button": "Knapp",
"ux_editor.component_title.Button": "Send inn",
"ux_editor.component_title.ButtonGroup": "Knappegruppe",
"ux_editor.component_title.Checkboxes": "Avmerkingsbokser",
"ux_editor.component_title.Custom": "Egendefinert",
"ux_editor.component_title.CustomButton": "Egendefinert knapp",
"ux_editor.component_title.CustomButton": "Tom knapp",
"ux_editor.component_title.Datepicker": "Dato",
"ux_editor.component_title.Dropdown": "Nedtrekksliste",
"ux_editor.component_title.FileUpload": "Vedlegg",
Expand All @@ -1330,13 +1335,13 @@
"ux_editor.component_title.List": "Liste",
"ux_editor.component_title.Map": "Stedfeste i kart",
"ux_editor.component_title.MultipleSelect": "Nedtrekksliste med flere valg",
"ux_editor.component_title.NavigationBar": "Navigasjonsbar",
"ux_editor.component_title.NavigationBar": "Navigasjonsfelt",
"ux_editor.component_title.NavigationButtons": "Navigasjonsknapper",
"ux_editor.component_title.Panel": "Informativ melding",
"ux_editor.component_title.Paragraph": "Avsnitt",
"ux_editor.component_title.Payment": "Betaling",
"ux_editor.component_title.PaymentDetails": "Betalingsdetaljer",
"ux_editor.component_title.PrintButton": "Utskriftsknapp",
"ux_editor.component_title.PrintButton": "Utskrift",
"ux_editor.component_title.RadioButtons": "Radioknapper",
"ux_editor.component_title.RepeatingGroup": "Repeterende gruppe",
"ux_editor.component_title.SubForm": "Underskjema",
Expand Down Expand Up @@ -1451,7 +1456,7 @@
"ux_editor.modal_properties_grid_size_xl": "Monitor",
"ux_editor.modal_properties_grid_size_xs": "Mobil",
"ux_editor.modal_properties_grid_use_default": "Bruk standardinnstilling",
"ux_editor.modal_properties_group_add_button": "Tekst til “legg til ny”-knapp",
"ux_editor.modal_properties_group_add_button": "Tekst til “Legg til ny”-knapp",
"ux_editor.modal_properties_group_add_button_description": "Teksten legger seg på slutten av teksten i knappen. “Legg til ny (din tekst)”",
"ux_editor.modal_properties_group_change_id": "Gruppe-ID",
"ux_editor.modal_properties_group_max_occur": "Maksimalt antall repetisjoner",
Expand Down
2 changes: 1 addition & 1 deletion frontend/libs/studio-components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@
"jest-environment-jsdom": "^29.7.0",
"storybook": "^8.0.4",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
"typescript": "5.6.2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@
align-items: center;
color: var(--fds-semantic-text-neutral-default);
width: 100%;
gap: var(--fds-spacing-1);
}

.textContainer,
.label,
.ellipsis {
overflow: hidden;
Expand Down
2 changes: 1 addition & 1 deletion frontend/libs/studio-hooks/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
"typescript": "5.6.2"
}
}
2 changes: 1 addition & 1 deletion frontend/libs/studio-icons/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
"typescript": "5.6.2"
}
}
2 changes: 1 addition & 1 deletion frontend/libs/studio-pure-functions/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"ts-jest": "^29.1.1",
"typescript": "^5.2.2"
"typescript": "5.6.2"
}
}
2 changes: 1 addition & 1 deletion frontend/packages/policy-editor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
"peerDependencies": {
"react": "18.3.1",
"react-dom": "18.3.1",
"typescript": "5.5.4"
"typescript": "5.6.2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ import { PolicyResourceFields } from './PolicyResourceFields';
import { textMock } from '@studio/testing/mocks/i18nMock';
import { PolicyEditorContext } from '../../../../../../contexts/PolicyEditorContext';
import { PolicyRuleContext } from '../../../../../../contexts/PolicyRuleContext';
import { mockPolicyEditorContextValue } from '../../../../../../../test/mocks/policyEditorContextMock';
import { mockPolicyRuleContextValue } from '../../../../../../../test/mocks/policyRuleContextMock';
import {
mockPolicyEditorContextValue,
mockPolicyEditorContextValueWithSingleNarrowingPolicy,
} from '../../../../../../../test/mocks/policyEditorContextMock';
import {
mockPolicyRuleContextValue,
mockPolicyRuleContextValueWithSingleNarrowingPolicy,
} from '../../../../../../../test/mocks/policyRuleContextMock';
import { mockResource11 } from '../../../../../../../test/mocks/policySubResourceMocks';

const mockValudNewText = '45';
Expand All @@ -23,7 +29,7 @@ describe('PolicyResourceFields', () => {
afterEach(jest.clearAllMocks);

it('sets text fields to readonly when "canEditTypeAndId" is false', () => {
renderPolicyResourceFields({ canEditTypeAndId: false });
renderPolicyResourceFieldsWithMultipleNarrowingPolicies({ canEditTypeAndId: false });

const idInput = screen.getByLabelText(textMock('policy_editor.narrowing_list_field_id'));
expect(idInput).toHaveAttribute('readonly');
Expand All @@ -33,7 +39,7 @@ describe('PolicyResourceFields', () => {
});

it('sets text fields to not be readonly when "canEditTypeAndId" is true', () => {
renderPolicyResourceFields();
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const idInput = screen.getByLabelText(textMock('policy_editor.narrowing_list_field_id'));
expect(idInput).not.toHaveAttribute('readonly');
Expand All @@ -44,7 +50,7 @@ describe('PolicyResourceFields', () => {

it('calls "setPolicyRules" when id input values change', async () => {
const user = userEvent.setup();
renderPolicyResourceFields();
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const idInput = screen.getByLabelText(textMock('policy_editor.narrowing_list_field_id'));

Expand All @@ -57,7 +63,7 @@ describe('PolicyResourceFields', () => {

it('calls "setPolicyRules" when type input values change', async () => {
const user = userEvent.setup();
renderPolicyResourceFields();
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const typeInput = screen.getByLabelText(textMock('policy_editor.narrowing_list_field_type'));

Expand All @@ -70,7 +76,7 @@ describe('PolicyResourceFields', () => {

it('calls "savePolicy" when input fields lose focus', async () => {
const user = userEvent.setup();
renderPolicyResourceFields();
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const typeInput = screen.getByLabelText(textMock('policy_editor.narrowing_list_field_type'));

Expand All @@ -79,8 +85,18 @@ describe('PolicyResourceFields', () => {
expect(mockPolicyEditorContextValue.savePolicy).toHaveBeenCalledTimes(1);
});

it('hides the delete button when "canEditTypeAndId" is false', () => {
renderPolicyResourceFields({ canEditTypeAndId: false });
it('renders the delete button when there are multiple narrowing policies', () => {
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const deleteButton = screen.queryByRole('button', {
name: textMock('policy_editor.narrowing_list_field_delete'),
});

expect(deleteButton).toBeInTheDocument();
});

it('hides the delete button when there is only a single narrowing policy', () => {
renderPolicyResourceFieldsWithSingleNarrowingPolicy();

const deleteButton = screen.queryByRole('button', {
name: textMock('policy_editor.narrowing_list_field_delete'),
Expand All @@ -91,7 +107,7 @@ describe('PolicyResourceFields', () => {

it('calls "setPolicyRules" and "savePolicy" when delete button is clicked', async () => {
const user = userEvent.setup();
renderPolicyResourceFields();
renderPolicyResourceFieldsWithMultipleNarrowingPolicies();

const deleteButton = screen.getByRole('button', {
name: textMock('policy_editor.narrowing_list_field_delete'),
Expand All @@ -104,9 +120,19 @@ describe('PolicyResourceFields', () => {
expect(mockPolicyEditorContextValue.setPolicyRules).toHaveBeenCalledTimes(1);
expect(mockPolicyEditorContextValue.savePolicy).toHaveBeenCalledTimes(1);
});

it('hides the delete button when there are multiple narrowing policies and "canEditTypeAndId" is false', () => {
renderPolicyResourceFieldsWithMultipleNarrowingPolicies({ canEditTypeAndId: false });

const deleteButton = screen.queryByRole('button', {
name: textMock('policy_editor.narrowing_list_field_delete'),
});

expect(deleteButton).not.toBeInTheDocument();
});
});

const renderPolicyResourceFields = (
const renderPolicyResourceFieldsWithMultipleNarrowingPolicies = (
policyResourceFieldsProps: Partial<PolicyResourceFieldsProps> = {},
) => {
return render(
Expand All @@ -117,3 +143,15 @@ const renderPolicyResourceFields = (
</PolicyEditorContext.Provider>,
);
};

const renderPolicyResourceFieldsWithSingleNarrowingPolicy = (
policyResourceFieldsProps: Partial<PolicyResourceFieldsProps> = {},
) => {
return render(
<PolicyEditorContext.Provider value={mockPolicyEditorContextValueWithSingleNarrowingPolicy}>
<PolicyRuleContext.Provider value={mockPolicyRuleContextValueWithSingleNarrowingPolicy}>
<PolicyResourceFields {...defaultProps} {...policyResourceFieldsProps} />
</PolicyRuleContext.Provider>
</PolicyEditorContext.Provider>,
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ export const PolicyResourceFields = ({
const { savePolicy, setPolicyRules, policyRules } = usePolicyEditorContext();
const { policyRule } = usePolicyRuleContext();

const isMultipleNarrowingResources = policyRule.resources[resourceIndex].length > 1;

const handleInputChange = (field: 'id' | 'type', value: string) => {
const updatedResources = [...policyRule.resources];
updatedResources[resourceIndex][resourceNarrowingIndex] = {
Expand Down Expand Up @@ -95,7 +97,7 @@ export const PolicyResourceFields = ({
</div>
</div>
<div className={classes.buttonWrapper}>
{canEditTypeAndId && (
{canEditTypeAndId && isMultipleNarrowingResources && (
<StudioButton
aria-disabled={!canEditTypeAndId}
color='danger'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import { type PolicyEditorContextProps } from '../../src/contexts/PolicyEditorContext';
import { mockActions } from './policyActionMocks';
import { mockPolicyRuleCards } from './policyRuleMocks';
import {
mockPolicyRuleCards,
mockPolicyRuleCardWithSingleNarrowingPolicy,
} from './policyRuleMocks';
import { mockSubjects } from './policySubjectMocks';
import { type PolicyEditorUsage } from '../../src/types';
import { mockResourecId1 } from './policySubResourceMocks';
Expand All @@ -19,3 +22,15 @@ export const mockPolicyEditorContextValue: PolicyEditorContextProps = {
resourceId: mockResourecId1,
savePolicy: jest.fn(),
};

export const mockPolicyEditorContextValueWithSingleNarrowingPolicy: PolicyEditorContextProps = {
policyRules: [mockPolicyRuleCardWithSingleNarrowingPolicy],
setPolicyRules: jest.fn(),
actions: mockActions,
subjects: mockSubjects,
usageType: mockUsageType,
resourceType: mockResourceType,
showAllErrors: false,
resourceId: mockResourecId1,
savePolicy: jest.fn(),
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { type PolicyRuleContextProps } from '../../src/contexts/PolicyRuleContext';
import { mockPolicyRuleCard1 } from './policyRuleMocks';
import {
mockPolicyRuleCard1,
mockPolicyRuleCardWithSingleNarrowingPolicy,
} from './policyRuleMocks';
import { type PolicyError } from '../../src/types';

const policyError: PolicyError = {
Expand All @@ -15,3 +18,11 @@ export const mockPolicyRuleContextValue: PolicyRuleContextProps = {
policyError,
setPolicyError: jest.fn(),
};

export const mockPolicyRuleContextValueWithSingleNarrowingPolicy: PolicyRuleContextProps = {
policyRule: mockPolicyRuleCardWithSingleNarrowingPolicy,
showAllErrors: false,
uniqueId: 'id',
policyError,
setPolicyError: jest.fn(),
};
Loading

0 comments on commit df831e2

Please sign in to comment.