@@ -5,6 +5,7 @@ import type { Resource } from 'rdf-object';
55import { RdfObjectLoader } from 'rdf-object' ;
66import type { Logger } from 'winston' ;
77import { ConfigPreprocessorOverride } from '../../../lib/preprocess/ConfigPreprocessorOverride' ;
8+ import { IRIS_OO } from '../../../lib/rdf/Iris' ;
89
910const DF = new DataFactory ( ) ;
1011
@@ -13,16 +14,13 @@ describe('ConfigPreprocessorOverride', () => {
1314 let componentResources : Record < string , Resource > ;
1415 let logger : Logger ;
1516 let preprocessor : ConfigPreprocessorOverride ;
16- let overrideParameters : string ;
1717
1818 beforeEach ( async ( ) => {
1919 objectLoader = new RdfObjectLoader ( {
2020 context : JSON . parse ( fs . readFileSync ( `${ __dirname } /../../../components/context.jsonld` , 'utf8' ) ) ,
2121 } ) ;
2222 await objectLoader . context ;
2323
24- overrideParameters = objectLoader . contextResolved . expandTerm ( 'oo:overrideParameters' ) ! ;
25-
2624 componentResources = {
2725 'ex:Component' : objectLoader . createCompactedResource ( {
2826 '@id' : 'ex:Component' ,
@@ -32,6 +30,10 @@ describe('ConfigPreprocessorOverride', () => {
3230 { '@id' : 'ex:param2' } ,
3331 ] ,
3432 } ) ,
33+ 'ex:ExtraType' : objectLoader . createCompactedResource ( {
34+ '@id' : 'ex:ExtraType' ,
35+ module : 'ex:Module' ,
36+ } ) ,
3537 } ;
3638 logger = < any > {
3739 warn : jest . fn ( ) ,
@@ -64,7 +66,7 @@ describe('ConfigPreprocessorOverride', () => {
6466 'ex:param1' : '"hello"' ,
6567 } ,
6668 } ) ;
67- const overrideProperties = overrideInstance . properties [ overrideParameters ] [ 0 ] . properties ;
69+ const overrideProperties = overrideInstance . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
6870 const override = preprocessor . canHandle ( config ) ;
6971 expect ( override ) . not . toBeUndefined ( ) ;
7072 expect ( Object . keys ( override ! ) . length ) . toBe ( 1 ) ;
@@ -86,7 +88,7 @@ describe('ConfigPreprocessorOverride', () => {
8688 'ex:param1' : '"updatedValue"' ,
8789 } ,
8890 } ) ;
89- const overrideProperties = overrideInstance . properties [ overrideParameters ] [ 0 ] . properties ;
91+ const overrideProperties = overrideInstance . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
9092 const override = preprocessor . canHandle ( config ) ! ;
9193 const { rawConfig, finishTransformation } = preprocessor . transform ( config , override ) ;
9294 expect ( finishTransformation ) . toBe ( false ) ;
@@ -120,8 +122,8 @@ describe('ConfigPreprocessorOverride', () => {
120122 'ex:param1' : '"value1-2"' ,
121123 } ,
122124 } ) ;
123- const override1Properties = overrideInstance1 . properties [ overrideParameters ] [ 0 ] . properties ;
124- const override2Properties = overrideInstance2 . properties [ overrideParameters ] [ 0 ] . properties ;
125+ const override1Properties = overrideInstance1 . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
126+ const override2Properties = overrideInstance2 . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
125127 const override = preprocessor . canHandle ( config ) ! ;
126128 const { rawConfig, finishTransformation } = preprocessor . transform ( config , override ) ;
127129 expect ( finishTransformation ) . toBe ( false ) ;
@@ -145,7 +147,7 @@ describe('ConfigPreprocessorOverride', () => {
145147 'ex:param1' : '"value1-1"' ,
146148 } ,
147149 } ) ;
148- const override1Properties = overrideInstance1 . properties [ overrideParameters ] [ 0 ] . properties ;
150+ const override1Properties = overrideInstance1 . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
149151 let override = preprocessor . canHandle ( config ) ;
150152 expect ( override ) . not . toBeUndefined ( ) ;
151153 expect ( Object . keys ( override ! ) . length ) . toBe ( 1 ) ;
@@ -180,7 +182,7 @@ describe('ConfigPreprocessorOverride', () => {
180182 'ex:param1' : '"value1-1"' ,
181183 } ,
182184 } ) ;
183- const override1Properties = overrideInstance1 . properties [ overrideParameters ] [ 0 ] . properties ;
185+ const override1Properties = overrideInstance1 . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
184186 let override = preprocessor . canHandle ( config ) ;
185187 expect ( override ) . not . toBeUndefined ( ) ;
186188 expect ( Object . keys ( override ! ) . length ) . toBe ( 1 ) ;
@@ -194,7 +196,7 @@ describe('ConfigPreprocessorOverride', () => {
194196 'ex:param1' : '"value1-2"' ,
195197 } ,
196198 } ) ;
197- const override2Properties = overrideInstance2 . properties [ overrideParameters ] [ 0 ] . properties ;
199+ const override2Properties = overrideInstance2 . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
198200 // `ex:myOverride2` is applied if we reset
199201 preprocessor . reset ( ) ;
200202 override = preprocessor . canHandle ( config ) ;
@@ -308,6 +310,26 @@ describe('ConfigPreprocessorOverride', () => {
308310 expect ( ( ) => preprocessor . canHandle ( config ) ) . toThrow ( `Found multiple types for override target ex:myComponentInstance of Override ex:myOverride` ) ;
309311 } ) ;
310312
313+ it ( 'does not error if the multiple types are duplicates' , ( ) => {
314+ const config = objectLoader . createCompactedResource ( {
315+ '@id' : 'ex:myComponentInstance' ,
316+ types : [ 'ex:Component' , 'ex:Component' ] ,
317+ } ) ;
318+ const overrideInstance = objectLoader . createCompactedResource ( {
319+ '@id' : 'ex:myOverride' ,
320+ types : 'oo:Override' ,
321+ overrideInstance : 'ex:myComponentInstance' ,
322+ overrideParameters : {
323+ 'ex:param1' : '"hello"' ,
324+ } ,
325+ } ) ;
326+ const overrideProperties = overrideInstance . properties [ IRIS_OO . overrideParameters ] [ 0 ] . properties ;
327+ const override = preprocessor . canHandle ( config ) ;
328+ expect ( override ) . not . toBeUndefined ( ) ;
329+ expect ( Object . keys ( override ! ) . length ) . toBe ( 1 ) ;
330+ expect ( override ! [ 'ex:param1' ] ) . toBe ( overrideProperties [ 'ex:param1' ] [ 0 ] ) ;
331+ } ) ;
332+
311333 it ( 'errors if an Override has multiple overrideParameters objects' , ( ) => {
312334 const config = objectLoader . createCompactedResource ( {
313335 '@id' : 'ex:myComponentInstance' ,
0 commit comments