@@ -124,4 +124,39 @@ public function testExportController(): void
124124 (new ExportController ($ response , $ options , $ pageSettings ))(self ::createStub (ServerRequest::class));
125125 self ::assertSame ($ expected , $ response ->getHTMLResult ());
126126 }
127+
128+ public function testExportControllerWithRawQuery (): void
129+ {
130+ Current::$ database = '' ;
131+ Current::$ table = '' ;
132+ Current::$ sqlQuery = 'SELECT 1 as foo ' ;
133+ $ config = Config::getInstance ();
134+ $ config ->selectedServer = $ config ->getSettings ()->Servers [1 ]->asArray ();
135+
136+ $ dbi = $ this ->createDatabaseInterface ();
137+ DatabaseInterface::$ instance = $ dbi ;
138+
139+ $ response = new ResponseRenderer ();
140+ $ relation = new Relation ($ dbi , $ config );
141+ $ template = new Template ($ config );
142+ $ userPreferences = new UserPreferences ($ dbi , $ relation , $ template , $ config , new Clock ());
143+ $ pageSettings = new PageSettings ($ userPreferences , $ response );
144+
145+ $ userPreferencesHandler = new UserPreferencesHandler (
146+ $ config ,
147+ $ dbi ,
148+ $ userPreferences ,
149+ new LanguageManager ($ config ),
150+ new ThemeManager (),
151+ );
152+ $ options = new Options ($ relation , new TemplateModel ($ dbi ), $ userPreferencesHandler );
153+
154+ $ request = self ::createStub (ServerRequest::class);
155+ $ request ->method ('has ' )->willReturnMap ([['raw_query ' , true ], ['single_table ' , false ]]);
156+
157+ $ result = (new ExportController ($ response , $ options , $ pageSettings ))($ request );
158+
159+ // Should return 200 instead of 400 for missing db/table params
160+ self ::assertSame (200 , $ result ->getStatusCode ());
161+ }
127162}
0 commit comments