@@ -168,6 +168,52 @@ describe("interfaces", () => {
168168 assert . deepEqual ( schema . definitions ! [ "MySubObject" ] , schemaOverride ) ;
169169 }
170170 } ) ;
171+ it ( "should output the schemas set by setSchemaOverride with getSchemaForSymbol" , ( ) => {
172+ const program = TJS . getProgramFromFiles ( [ resolve ( BASE + "interface-multi/main.ts" ) ] ) ;
173+ const generator = TJS . buildGenerator ( program ) ;
174+ assert ( generator !== null ) ;
175+
176+ const schemaOverride1 : TJS . Definition = { type : "string" } ;
177+ const schemaOverride2 : TJS . Definition = { type : "integer" } ;
178+
179+ generator ?. setSchemaOverride ( "MySubObject" , schemaOverride1 ) ;
180+ generator ?. setSchemaOverride ( "MySubObject2" , schemaOverride2 ) ;
181+ const schema = generator ?. getSchemaForSymbol ( "MySubObject" ) ;
182+
183+ // Should not change original schema object.
184+ assert . deepEqual ( schemaOverride1 , { type : "string" } ) ;
185+ assert . deepEqual ( schemaOverride2 , { type : "integer" } ) ;
186+
187+ assert . deepEqual ( schema , { ...schemaOverride1 , $schema : "http://json-schema.org/draft-07/schema#" } ) ;
188+ } ) ;
189+ it ( "should output the schemas set by setSchemaOverride with getSchemaForSymbol and other overrides" , ( ) => {
190+ const program = TJS . getProgramFromFiles ( [ resolve ( BASE + "interface-multi/main.ts" ) ] ) ;
191+ const generator = TJS . buildGenerator ( program ) ;
192+ assert ( generator !== null ) ;
193+ const schemaOverride1 : TJS . Definition = { type : "string" } ;
194+ const schemaOverride2 : TJS . Definition = { type : "integer" } ;
195+
196+ generator ?. setSchemaOverride ( "MySubObject1" , schemaOverride1 ) ;
197+ generator ?. setSchemaOverride ( "MySubObject2" , schemaOverride2 ) ;
198+ const schema = generator ?. getSchemaForSymbol ( "MySubObject1" , true , true ) ;
199+
200+ // Should not change original schema object.
201+ assert . deepEqual ( schemaOverride1 , { type : "string" } ) ;
202+ assert . deepEqual ( schemaOverride2 , { type : "integer" } ) ;
203+
204+ assert . deepEqual ( schema , {
205+ ...schemaOverride1 ,
206+ $schema : "http://json-schema.org/draft-07/schema#" ,
207+ definitions : {
208+ MySubObject1 : {
209+ type : "string"
210+ } ,
211+ MySubObject2 : {
212+ type : "integer"
213+ }
214+ }
215+ } ) ;
216+ } ) ;
171217 it ( "should ignore type aliases that have schema overrides" , ( ) => {
172218 const program = TJS . getProgramFromFiles ( [ resolve ( BASE + "type-alias-schema-override/main.ts" ) ] ) ;
173219 const generator = TJS . buildGenerator ( program ) ;
0 commit comments