@@ -5,7 +5,7 @@ import DatabaseManager from '@database/manager';
55import { PLAYBOOK_TABLES } from '@playbooks/constants/database' ;
66import TestHelper from '@test/test_helper' ;
77
8- import { handlePlaybookRuns , setOwner } from './run' ;
8+ import { handlePlaybookRuns , setOwner , renamePlaybookRun } from './run' ;
99
1010import type { Database } from '@nozbe/watermelondb' ;
1111import type PlaybookRunModel from '@playbooks/types/database/models/playbook_run' ;
@@ -80,7 +80,7 @@ describe('setOwner', () => {
8080
8181 const { data, error} = await setOwner ( serverUrl , nonExistentRunId , newOwnerId ) ;
8282
83- expect ( error ) . toBe ( 'Run not found' ) ;
83+ expect ( error ) . toBe ( 'Checklist not found' ) ;
8484 expect ( data ) . toBeUndefined ( ) ;
8585 } ) ;
8686
@@ -153,3 +153,100 @@ describe('setOwner', () => {
153153 expect ( updatedRun . ownerUserId ) . toBe ( emptyOwnerId ) ;
154154 } ) ;
155155} ) ;
156+
157+ describe ( 'renamePlaybookRun' , ( ) => {
158+ let database : Database ;
159+ beforeEach ( ( ) => {
160+ database = DatabaseManager . getServerDatabaseAndOperator ( serverUrl ) . database ;
161+ } ) ;
162+
163+ it ( 'should handle not found database' , async ( ) => {
164+ const { error} = await renamePlaybookRun ( 'foo' , 'runid' , 'New Name' ) ;
165+ expect ( error ) . toBeTruthy ( ) ;
166+ expect ( ( error as Error ) . message ) . toContain ( 'foo database not found' ) ;
167+ } ) ;
168+
169+ it ( 'should handle playbook run not found' , async ( ) => {
170+ const { error} = await renamePlaybookRun ( serverUrl , 'nonexistent' , 'New Name' ) ;
171+ expect ( error ) . toBe ( 'Playbook run not found: nonexistent' ) ;
172+ } ) ;
173+
174+ it ( 'should handle database write errors' , async ( ) => {
175+ const runs = TestHelper . createPlaybookRuns ( 1 , 0 , 0 ) ;
176+ await handlePlaybookRuns ( serverUrl , runs , false , false ) ;
177+
178+ const playbookRunId = runs [ 0 ] . id ;
179+
180+ const originalWrite = database . write ;
181+ database . write = jest . fn ( ) . mockRejectedValue ( new Error ( 'Database write failed' ) ) ;
182+
183+ const { error} = await renamePlaybookRun ( serverUrl , playbookRunId , 'New Name' ) ;
184+ expect ( error ) . toBeTruthy ( ) ;
185+ expect ( ( error as Error ) . message ) . toBe ( 'Database write failed' ) ;
186+
187+ database . write = originalWrite ;
188+ } ) ;
189+
190+ it ( 'should rename playbook run successfully' , async ( ) => {
191+ const runs = TestHelper . createPlaybookRuns ( 1 , 0 , 0 ) ;
192+ await handlePlaybookRuns ( serverUrl , runs , false , false ) ;
193+
194+ const playbookRunId = runs [ 0 ] . id ;
195+ const newName = 'Updated Run Name' ;
196+
197+ const { data, error} = await renamePlaybookRun ( serverUrl , playbookRunId , newName ) ;
198+
199+ expect ( error ) . toBeUndefined ( ) ;
200+ expect ( data ) . toBe ( true ) ;
201+
202+ const updatedRun = await database . get < PlaybookRunModel > ( PLAYBOOK_TABLES . PLAYBOOK_RUN ) . find ( playbookRunId ) ;
203+ expect ( updatedRun . name ) . toBe ( newName ) ;
204+ } ) ;
205+
206+ it ( 'should handle empty name string' , async ( ) => {
207+ const runs = TestHelper . createPlaybookRuns ( 1 , 0 , 0 ) ;
208+ await handlePlaybookRuns ( serverUrl , runs , false , false ) ;
209+
210+ const playbookRunId = runs [ 0 ] . id ;
211+
212+ const { data, error} = await renamePlaybookRun ( serverUrl , playbookRunId , '' ) ;
213+
214+ expect ( error ) . toBeUndefined ( ) ;
215+ expect ( data ) . toBe ( true ) ;
216+
217+ const updatedRun = await database . get < PlaybookRunModel > ( PLAYBOOK_TABLES . PLAYBOOK_RUN ) . find ( playbookRunId ) ;
218+ expect ( updatedRun . name ) . toBe ( '' ) ;
219+ } ) ;
220+
221+ it ( 'should handle whitespace-only name' , async ( ) => {
222+ const runs = TestHelper . createPlaybookRuns ( 1 , 0 , 0 ) ;
223+ await handlePlaybookRuns ( serverUrl , runs , false , false ) ;
224+
225+ const playbookRunId = runs [ 0 ] . id ;
226+ const whitespaceName = ' ' ;
227+
228+ const { data, error} = await renamePlaybookRun ( serverUrl , playbookRunId , whitespaceName ) ;
229+
230+ expect ( error ) . toBeUndefined ( ) ;
231+ expect ( data ) . toBe ( true ) ;
232+
233+ const updatedRun = await database . get < PlaybookRunModel > ( PLAYBOOK_TABLES . PLAYBOOK_RUN ) . find ( playbookRunId ) ;
234+ expect ( updatedRun . name ) . toBe ( whitespaceName ) ;
235+ } ) ;
236+
237+ it ( 'should handle very long names' , async ( ) => {
238+ const runs = TestHelper . createPlaybookRuns ( 1 , 0 , 0 ) ;
239+ await handlePlaybookRuns ( serverUrl , runs , false , false ) ;
240+
241+ const playbookRunId = runs [ 0 ] . id ;
242+ const longName = 'A' . repeat ( 300 ) ; // 300 characters
243+
244+ const { data, error} = await renamePlaybookRun ( serverUrl , playbookRunId , longName ) ;
245+
246+ expect ( error ) . toBeUndefined ( ) ;
247+ expect ( data ) . toBe ( true ) ;
248+
249+ const updatedRun = await database . get < PlaybookRunModel > ( PLAYBOOK_TABLES . PLAYBOOK_RUN ) . find ( playbookRunId ) ;
250+ expect ( updatedRun . name ) . toBe ( longName ) ;
251+ } ) ;
252+ } ) ;
0 commit comments