@@ -22,6 +22,58 @@ describe("nitro:preset:nitro-dev", async () => {
2222 expect ( status ) . toBe ( 200 ) ;
2323 } ) ;
2424
25+ describe ( "tasks" , ( ) => {
26+ it ( "GET /_nitro/tasks lists tasks" , async ( ) => {
27+ const { data, status } = await callHandler ( { url : "/_nitro/tasks" } ) ;
28+ expect ( status ) . toBe ( 200 ) ;
29+ expect ( data . tasks ) . toBeTypeOf ( "object" ) ;
30+ expect ( data . tasks . test ) . toMatchObject ( { description : "task to debug" } ) ;
31+ expect ( data . tasks [ "db:migrate" ] ) . toMatchObject ( {
32+ description : "Run database migrations" ,
33+ } ) ;
34+ expect ( data . scheduledTasks ) . toEqual (
35+ expect . arrayContaining ( [
36+ expect . objectContaining ( { cron : "* * * * *" , tasks : [ "test" ] } ) ,
37+ ] )
38+ ) ;
39+ } ) ;
40+
41+ it ( "GET /_nitro/tasks/:name runs a task" , async ( ) => {
42+ const { data, status } = await callHandler ( {
43+ url : "/_nitro/tasks/db:migrate" ,
44+ } ) ;
45+ expect ( status ) . toBe ( 200 ) ;
46+ expect ( data . result ) . toBe ( "Success" ) ;
47+ } ) ;
48+
49+ it ( "POST /_nitro/tasks/:name runs a task" , async ( ) => {
50+ const { data, status } = await callHandler ( {
51+ url : "/_nitro/tasks/db:migrate" ,
52+ method : "POST" ,
53+ } ) ;
54+ expect ( status ) . toBe ( 200 ) ;
55+ expect ( data . result ) . toBe ( "Success" ) ;
56+ } ) ;
57+
58+ it ( "POST /_nitro/tasks/:name accepts payload" , async ( ) => {
59+ const { data, status } = await callHandler ( {
60+ url : "/_nitro/tasks/test" ,
61+ method : "POST" ,
62+ body : JSON . stringify ( { payload : { key : "value" } } ) ,
63+ } ) ;
64+ expect ( status ) . toBe ( 200 ) ;
65+ expect ( data . result . payload . key ) . toBe ( "value" ) ;
66+ } ) ;
67+
68+ it ( "GET /_nitro/tasks/:name accepts query params as payload" , async ( ) => {
69+ const { data, status } = await callHandler ( {
70+ url : "/_nitro/tasks/test?key=value" ,
71+ } ) ;
72+ expect ( status ) . toBe ( 200 ) ;
73+ expect ( data . result . payload . key ) . toBe ( "value" ) ;
74+ } ) ;
75+ } ) ;
76+
2577 describe ( "openAPI" , ( ) => {
2678 let spec : OpenAPI3 ;
2779 it ( "/_openapi.json" , async ( ) => {
0 commit comments