diff --git a/src/react/atlascode/create-work-item/utils.test.tsx b/src/react/atlascode/create-work-item/utils.test.tsx new file mode 100644 index 000000000..9592bcc01 --- /dev/null +++ b/src/react/atlascode/create-work-item/utils.test.tsx @@ -0,0 +1,51 @@ +import { Project } from '@atlassian-pi/jira-pi-common-models'; +import { + CreateWorkItemWebviewProviderMessage, + CreateWorkItemWebviewProviderMessageType, +} from 'src/work-items/create-work-item/messages/createWorkItemWebviewProviderMessages'; + +import { CreateFormState, createReducer } from './utils'; + +describe('createReducer', () => { + it('uses the project ID as the option value after changing Jira sites', () => { + const project = { + id: '10001', + key: 'TEST', + name: 'Test Project', + avatarUrls: { + '48x48': 'https://example.com/project-avatar.png', + }, + } as Project; + + const initialState: CreateFormState = { + summary: '', + availableSites: [], + availableProjects: [], + availableIssueTypes: [], + requiredFieldsForIssueType: [], + }; + + const action: CreateWorkItemWebviewProviderMessage = { + type: CreateWorkItemWebviewProviderMessageType.UpdatedSelectedSite, + payload: { + availableProjects: [project], + hasMoreProjects: false, + availableIssueTypes: [], + selectedProjectId: project.id, + requiredFields: [], + }, + }; + + const result = createReducer(initialState, action); + + expect(result.availableProjects).toEqual([ + { + name: project.name, + value: project.id, + iconPath: project.avatarUrls['48x48'], + }, + ]); + + expect(result.selectedProjectId).toBe(result.availableProjects[0].value); + }); +}); diff --git a/src/react/atlascode/create-work-item/utils.tsx b/src/react/atlascode/create-work-item/utils.tsx index 7440e2f84..f14ab86c0 100644 --- a/src/react/atlascode/create-work-item/utils.tsx +++ b/src/react/atlascode/create-work-item/utils.tsx @@ -91,7 +91,7 @@ export function createReducer(state: CreateFormState, action: CreateFormAction): ...state, availableProjects: action.payload.availableProjects.map((project) => ({ name: project.name, - value: project.key, + value: project.id, iconPath: project.avatarUrls['48x48'], })), hasMoreProjects: action.payload.hasMoreProjects,