@@ -314,3 +314,58 @@ func TestRegisterRoutes(t *testing.T) {
314
314
assert .Equal (t , "console.log('Hello, world!');" , recorder .Body .String (), "Response should contain the JS content" )
315
315
})
316
316
}
317
+ func TestRegisterRoutesWithDevEnv (t * testing.T ) {
318
+ // Create initial state
319
+ initialState := InitialState {
320
+ Title : "Test Title" ,
321
+ Icon : "test-icon.png" ,
322
+ }
323
+
324
+ // Create a test logger
325
+ logger , _ := logtest .NewNullLogger ()
326
+
327
+ // Create a new Web instance
328
+ web , err := New (initialState , WithLogger (logger ), WithAssetsFS (createMockFS ()))
329
+ require .NoError (t , err , "Failed to create Web instance" )
330
+
331
+ // Create temporary dist directory structure for development
332
+ err = os .MkdirAll ("dist/assets" , 0755 )
333
+ require .NoError (t , err , "Failed to create dist directory" )
334
+ defer os .RemoveAll ("dist/assets" ) // Clean up after test
335
+
336
+ // Create a test file in the dist/assets directory
337
+ devFileContent := "console.log('Development mode!');"
338
+ err = os .WriteFile ("dist/assets/test-file-dev-app.js" , []byte (devFileContent ), 0644 )
339
+ require .NoError (t , err , "Failed to write dev file" )
340
+
341
+ // Set the development environment variable
342
+ t .Setenv ("EC_DEV_ENV" , "true" )
343
+ // Create router and register routes
344
+ router := mux .NewRouter ()
345
+ web .RegisterRoutes (router )
346
+
347
+ t .Run ("Dev File from Local Filesystem" , func (t * testing.T ) {
348
+ req := httptest .NewRequest ("GET" , "/assets/test-file-dev-app.js" , nil )
349
+ recorder := httptest .NewRecorder ()
350
+
351
+ // Serve the request
352
+ router .ServeHTTP (recorder , req )
353
+
354
+ // Check status code
355
+ assert .Equal (t , http .StatusOK , recorder .Code , "Should return status OK for dev file" )
356
+
357
+ // Check that the dev file content is served from local filesystem
358
+ assert .Equal (t , devFileContent , recorder .Body .String (), "Response should contain the dev file content from local filesystem" )
359
+ })
360
+
361
+ t .Run ("Non-existent File Returns 404" , func (t * testing.T ) {
362
+ req := httptest .NewRequest ("GET" , "/assets/non-existent.js" , nil )
363
+ recorder := httptest .NewRecorder ()
364
+
365
+ // Serve the request
366
+ router .ServeHTTP (recorder , req )
367
+
368
+ // Check status code - should be 404 when file doesn't exist in local filesystem
369
+ assert .Equal (t , http .StatusNotFound , recorder .Code , "Should return 404 for non-existent file in dev mode" )
370
+ })
371
+ }
0 commit comments