diff --git a/src/store/__test__/activityStore.spec.ts b/src/store/__test__/activityStore.spec.ts index 14ed7a67..75232c8f 100644 --- a/src/store/__test__/activityStore.spec.ts +++ b/src/store/__test__/activityStore.spec.ts @@ -92,6 +92,50 @@ describe('ActivityStore', () => { expect(result).toBeNull(); expect(activityStore.error).toBe('Creation failed'); }); + + it('should create activity with title', async () => { + const newActivity: INewActivity = { + workspace: 'test', + content: 'New activity', + contentType: 'feature_creation', + featureUUID: 'feature1', + phaseUUID: 'phase1', + author: 'human', + authorRef: 'user1', + title: 'Test Title' + }; + + const mockResponseActivity = { + ...mockActivity, + title: 'Test Title' + }; + + (mainStore.createActivity as jest.Mock).mockResolvedValue(mockResponseActivity); + + const result = await activityStore.createActivity(newActivity); + + expect(result).toEqual(mockResponseActivity); + expect(activityStore.activities.get('1')?.title).toBe('Test Title'); + }); + + it('should create activity without title', async () => { + const newActivity: INewActivity = { + workspace: 'test', + content: 'New activity', + contentType: 'feature_creation', + featureUUID: 'feature1', + phaseUUID: 'phase1', + author: 'human', + authorRef: 'user1' + }; + + (mainStore.createActivity as jest.Mock).mockResolvedValue(mockActivity); + + const result = await activityStore.createActivity(newActivity); + + expect(result).toEqual(mockActivity); + expect(activityStore.activities.get('1')?.title).toBeUndefined(); + }); }); describe('createThreadResponse', () => { @@ -145,6 +189,37 @@ describe('ActivityStore', () => { expect(result).toBe(false); expect(activityStore.error).toBe('Update failed'); }); + + it('should update activity title', async () => { + activityStore.activities.set('1', mockActivity); + const updates = { title: 'Updated Title' }; + + (mainStore.updateActivity as jest.Mock).mockResolvedValue(true); + + const result = await activityStore.updateActivity('1', updates); + + expect(result).toBe(true); + expect(activityStore.activities.get('1')?.title).toBe('Updated Title'); + }); + + it('should update activity without title', async () => { + const activityWithTitle = { ...mockActivity, title: 'Initial Title' }; + activityStore.activities.set('1', activityWithTitle); + + const updates = { content: 'Updated content' }; + + (mainStore.updateActivity as jest.Mock).mockResolvedValue(true); + + const result = await activityStore.updateActivity('1', updates); + + expect(result).toBe(true); + expect(activityStore.activities.get('1')).toEqual({ + ...activityWithTitle, + content: 'Updated content' + }); + + expect(activityStore.activities.get('1')?.title).toBe('Initial Title'); + }); }); describe('deleteActivity', () => { diff --git a/src/store/interface.ts b/src/store/interface.ts index b17b6085..69bd4c85 100644 --- a/src/store/interface.ts +++ b/src/store/interface.ts @@ -616,6 +616,7 @@ export interface IActivity { sequence: number; contentType: ContentType; content: string; + title?: string; workspace: string; featureUUID: string; phaseUUID: string; @@ -638,4 +639,5 @@ export interface INewActivity { author: AuthorType; authorRef: string; threadId?: string; + title?: string; }