@@ -59,6 +59,110 @@ test("update package privacy settings", async () => {
5959 expect ( updatedPackage ?. is_unlisted ) . toBe ( true )
6060} )
6161
62+ test ( "update package default view to valid values" , async ( ) => {
63+ const { axios, db } = await getTestServer ( )
64+
65+ const packageResponse = await axios . post ( "/api/packages/create" , {
66+ name : "testuser/view-package" ,
67+ description : "View Package" ,
68+ } )
69+ const packageId = packageResponse . data . package . package_id
70+
71+ const validViews = [ "files" , "3d" , "pcb" , "schematic" ]
72+
73+ for ( const view of validViews ) {
74+ const response = await axios . post ( "/api/packages/update" , {
75+ package_id : packageId ,
76+ default_view : view ,
77+ } )
78+
79+ expect ( response . status ) . toBe ( 200 )
80+ expect ( response . data . ok ) . toBe ( true )
81+ expect ( response . data . package . default_view ) . toBe ( view )
82+
83+ const updatedPackage = db . packages . find ( ( p ) => p . package_id === packageId )
84+ expect ( updatedPackage ?. default_view ) . toBe ( view as any )
85+ }
86+ } )
87+
88+ test ( "update package default view with invalid value should fail" , async ( ) => {
89+ const { axios } = await getTestServer ( )
90+
91+ const packageResponse = await axios . post ( "/api/packages/create" , {
92+ name : "testuser/invalid-view-package" ,
93+ description : "Invalid View Package" ,
94+ } )
95+ const packageId = packageResponse . data . package . package_id
96+
97+ const invalidViews = [ "invalid" , "code" , "preview" , "dashboard" , "" , null ]
98+
99+ for ( const invalidView of invalidViews ) {
100+ try {
101+ await axios . post ( "/api/packages/update" , {
102+ package_id : packageId ,
103+ default_view : invalidView ,
104+ } )
105+ throw new Error (
106+ `Expected request to fail for invalid view: ${ invalidView } ` ,
107+ )
108+ } catch ( error : any ) {
109+ expect ( error . status ) . toBe ( 400 )
110+ }
111+ }
112+ } )
113+
114+ test ( "package has default view of files when not specified" , async ( ) => {
115+ const { axios, db } = await getTestServer ( )
116+
117+ const packageResponse = await axios . post ( "/api/packages/create" , {
118+ name : "testuser/default-view-package" ,
119+ description : "Default View Package" ,
120+ } )
121+ const packageId = packageResponse . data . package . package_id
122+
123+ const createdPackage = db . packages . find ( ( p ) => p . package_id === packageId )
124+ expect ( createdPackage ?. default_view ) . toBe ( "files" )
125+
126+ const response = await axios . post ( "/api/packages/update" , {
127+ package_id : packageId ,
128+ description : "Updated without changing view" ,
129+ } )
130+
131+ expect ( response . status ) . toBe ( 200 )
132+ expect ( response . data . package . default_view ) . toBe ( "files" )
133+ } )
134+
135+ test ( "update package with multiple fields including default view" , async ( ) => {
136+ const { axios, db } = await getTestServer ( )
137+
138+ const packageResponse = await axios . post ( "/api/packages/create" , {
139+ name : "testuser/multi-update-package" ,
140+ description : "Multi Update Package" ,
141+ } )
142+ const packageId = packageResponse . data . package . package_id
143+
144+ const response = await axios . post ( "/api/packages/update" , {
145+ package_id : packageId ,
146+ name : "multi-updated-package" ,
147+ description : "Updated Description" ,
148+ website : "https://example.com" ,
149+ is_private : true ,
150+ default_view : "pcb" ,
151+ } )
152+
153+ expect ( response . status ) . toBe ( 200 )
154+ expect ( response . data . ok ) . toBe ( true )
155+ expect ( response . data . package . name ) . toBe ( "testuser/multi-updated-package" )
156+ expect ( response . data . package . description ) . toBe ( "Updated Description" )
157+ expect ( response . data . package . website ) . toBe ( "https://example.com" )
158+ expect ( response . data . package . is_private ) . toBe ( true )
159+ expect ( response . data . package . default_view ) . toBe ( "pcb" )
160+
161+ const updatedPackage = db . packages . find ( ( p ) => p . package_id === packageId )
162+ expect ( updatedPackage ?. default_view ) . toBe ( "pcb" )
163+ expect ( updatedPackage ?. website ) . toBe ( "https://example.com" )
164+ } )
165+
62166test ( "update non-existent package" , async ( ) => {
63167 const { axios } = await getTestServer ( )
64168
0 commit comments