@@ -3,7 +3,7 @@ import nock from "nock";
33import * as mocks from "./stubs" ;
44
55import * as RequestClient from "../src/client/RequestClient" ;
6- import { InternalConfig } from "../src/utils/Config" ;
6+ import { ConfigurationUtility , InternalConfig } from "../src/utils/Config" ;
77import * as Core from "../src/types" ;
88import * as Regex from "../src/helpers/Regex" ;
99import * as RequestUtility from "../src/client/request" ;
@@ -285,3 +285,113 @@ describe("Composers.composeHeaders -", () => {
285285 expect ( result ) . to . deep . equal ( { "custom-header" : "10" , something : "else" , john : "doe" } ) ;
286286 } ) ;
287287} ) ;
288+
289+ describe ( "Config.merge -" , ( ) => {
290+ const defaultConfig : InternalConfig = ConfigurationUtility . default ( ) ;
291+
292+ it ( "returnRepresentation = true -> false" , ( ) => {
293+ const internalConfig : InternalConfig = {
294+ ...defaultConfig ,
295+ returnRepresentation : true ,
296+ } ;
297+
298+ ConfigurationUtility . merge ( internalConfig , {
299+ returnRepresentation : false ,
300+ } ) ;
301+
302+ expect ( internalConfig . returnRepresentation ) . to . be . false ;
303+ } ) ;
304+
305+ it ( "searchApiOptions. escapeSpecialCharacters = null -> true" , ( ) => {
306+ const internalConfig : InternalConfig = {
307+ ...defaultConfig ,
308+ } ;
309+
310+ ConfigurationUtility . merge ( internalConfig , {
311+ searchApi : {
312+ options : {
313+ escapeSpecialCharacters : true ,
314+ } ,
315+ } ,
316+ } ) ;
317+
318+ expect ( internalConfig . searchApi . escapeSpecialCharacters ) . to . be . true ;
319+ } ) ;
320+
321+ it ( "searchApiOptions. escapeSpecialCharacters = true -> false" , ( ) => {
322+ const internalConfig : InternalConfig = {
323+ ...defaultConfig ,
324+ searchApi : {
325+ url : "" ,
326+ escapeSpecialCharacters : true ,
327+ } ,
328+ } ;
329+
330+ ConfigurationUtility . merge ( internalConfig , {
331+ searchApi : {
332+ options : {
333+ escapeSpecialCharacters : false ,
334+ } ,
335+ } ,
336+ } ) ;
337+
338+ expect ( internalConfig . searchApi . escapeSpecialCharacters ) . to . be . false ;
339+ } ) ;
340+
341+ it ( "searchApiOptions. escapeSpecialCharacters = false -> true" , ( ) => {
342+ const internalConfig : InternalConfig = {
343+ ...defaultConfig ,
344+ searchApi : {
345+ url : "" ,
346+ escapeSpecialCharacters : false ,
347+ } ,
348+ } ;
349+
350+ ConfigurationUtility . merge ( internalConfig , {
351+ searchApi : {
352+ options : {
353+ escapeSpecialCharacters : true ,
354+ } ,
355+ } ,
356+ } ) ;
357+
358+ expect ( internalConfig . searchApi . escapeSpecialCharacters ) . to . be . true ;
359+ } ) ;
360+
361+ it ( "searchApiOptions. empty options does not overwrite current options" , ( ) => {
362+ const internalConfig : InternalConfig = {
363+ ...defaultConfig ,
364+ searchApi : {
365+ url : "" ,
366+ escapeSpecialCharacters : true ,
367+ } ,
368+ } ;
369+
370+ ConfigurationUtility . merge ( internalConfig , {
371+ searchApi : {
372+ options : { } ,
373+ } ,
374+ } ) ;
375+
376+ expect ( internalConfig . searchApi . escapeSpecialCharacters ) . to . be . true ;
377+ } ) ;
378+
379+ it ( "searchApiOptions. options = undefined" , ( ) => {
380+ const internalConfig : InternalConfig = {
381+ ...defaultConfig ,
382+ searchApi : {
383+ url : "" ,
384+ escapeSpecialCharacters : false ,
385+ } ,
386+ } ;
387+
388+ ConfigurationUtility . merge ( internalConfig , {
389+ searchApi : {
390+ version : "2.0"
391+ } ,
392+ } ) ;
393+
394+ expect ( internalConfig . searchApi . escapeSpecialCharacters ) . to . be . false ;
395+ expect ( internalConfig . searchApi . version ) . to . be . eq ( "2.0" ) ;
396+ } ) ;
397+ } ) ;
0 commit comments