@@ -10,10 +10,12 @@ import { AuthService } from '../../core/auth/auth.service';
1010import { CookieService } from '../../core/services/cookie.service' ;
1111import { getTestScheduler } from 'jasmine-marbles' ;
1212import { MetadataValue } from '../../core/shared/metadata.models' ;
13- import { clone , cloneDeep } from 'lodash' ;
13+ import { clone , cloneDeep } from 'lodash' ;
1414import { ConfigurationDataService } from '../../core/data/configuration-data.service' ;
15- import { createFailedRemoteDataObject$ , createSuccessfulRemoteDataObject$ } from '../remote-data.utils' ;
15+ import { createFailedRemoteDataObject$ , createSuccessfulRemoteDataObject$ } from '../remote-data.utils' ;
1616import { ConfigurationProperty } from '../../core/shared/configuration-property.model' ;
17+ import { ANONYMOUS_STORAGE_NAME_KLARO } from './klaro-configuration' ;
18+ import { TestScheduler } from 'rxjs/testing' ;
1719
1820describe ( 'BrowserKlaroService' , ( ) => {
1921 const trackingIdProp = 'google.analytics.key' ;
@@ -29,7 +31,7 @@ describe('BrowserKlaroService', () => {
2931 let configurationDataService : ConfigurationDataService ;
3032 const createConfigSuccessSpy = ( ...values : string [ ] ) => jasmine . createSpyObj ( 'configurationDataService' , {
3133 findByPropertyName : createSuccessfulRemoteDataObject$ ( {
32- ... new ConfigurationProperty ( ) ,
34+ ...new ConfigurationProperty ( ) ,
3335 name : trackingIdProp ,
3436 values : values ,
3537 } ) ,
@@ -42,7 +44,9 @@ describe('BrowserKlaroService', () => {
4244 let findByPropertyName ;
4345
4446 beforeEach ( ( ) => {
45- user = new EPerson ( ) ;
47+ user = Object . assign ( new EPerson ( ) , {
48+ uuid : 'test-user'
49+ } ) ;
4650
4751 translateService = getMockTranslateService ( ) ;
4852 ePersonService = jasmine . createSpyObj ( 'ePersonService' , {
@@ -104,7 +108,7 @@ describe('BrowserKlaroService', () => {
104108 services : [ {
105109 name : appName ,
106110 purposes : [ purpose ]
107- } , {
111+ } , {
108112 name : googleAnalytics ,
109113 purposes : [ purpose ]
110114 } ] ,
@@ -219,6 +223,40 @@ describe('BrowserKlaroService', () => {
219223 } ) ;
220224 } ) ;
221225
226+ describe ( 'getSavedPreferences' , ( ) => {
227+ let scheduler : TestScheduler ;
228+ beforeEach ( ( ) => {
229+ scheduler = getTestScheduler ( ) ;
230+ } ) ;
231+
232+ describe ( 'when no user is autheticated' , ( ) => {
233+ beforeEach ( ( ) => {
234+ spyOn ( service as any , 'getUser$' ) . and . returnValue ( observableOf ( undefined ) ) ;
235+ } ) ;
236+
237+ it ( 'should return the cookie consents object' , ( ) => {
238+ scheduler . schedule ( ( ) => service . getSavedPreferences ( ) . subscribe ( ) ) ;
239+ scheduler . flush ( ) ;
240+
241+ expect ( cookieService . get ) . toHaveBeenCalledWith ( ANONYMOUS_STORAGE_NAME_KLARO ) ;
242+ } ) ;
243+ } ) ;
244+
245+ describe ( 'when user is autheticated' , ( ) => {
246+ beforeEach ( ( ) => {
247+ spyOn ( service as any , 'getUser$' ) . and . returnValue ( observableOf ( user ) ) ;
248+ } ) ;
249+
250+ it ( 'should return the cookie consents object' , ( ) => {
251+ scheduler . schedule ( ( ) => service . getSavedPreferences ( ) . subscribe ( ) ) ;
252+ scheduler . flush ( ) ;
253+
254+ expect ( cookieService . get ) . toHaveBeenCalledWith ( 'klaro-' + user . uuid ) ;
255+ } ) ;
256+ } ) ;
257+ } ) ;
258+
259+
222260 describe ( 'setSettingsForUser when there are changes' , ( ) => {
223261 const cookieConsent = { test : 'testt' } ;
224262 const cookieConsentString = '{test: \'testt\'}' ;
@@ -271,40 +309,40 @@ describe('BrowserKlaroService', () => {
271309 } ) ;
272310 it ( 'should not filter googleAnalytics when servicesToHide are empty' , ( ) => {
273311 const filteredConfig = ( service as any ) . filterConfigServices ( [ ] ) ;
274- expect ( filteredConfig ) . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
312+ expect ( filteredConfig ) . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
275313 } ) ;
276314 it ( 'should filter services using names passed as servicesToHide' , ( ) => {
277315 const filteredConfig = ( service as any ) . filterConfigServices ( [ googleAnalytics ] ) ;
278- expect ( filteredConfig ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
316+ expect ( filteredConfig ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
279317 } ) ;
280318 it ( 'should have been initialized with googleAnalytics' , ( ) => {
281319 service . initialize ( ) ;
282- expect ( service . klaroConfig . services ) . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
320+ expect ( service . klaroConfig . services ) . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
283321 } ) ;
284322 it ( 'should filter googleAnalytics when empty configuration is retrieved' , ( ) => {
285323 configurationDataService . findByPropertyName = jasmine . createSpy ( ) . withArgs ( GOOGLE_ANALYTICS_KEY ) . and . returnValue (
286324 createSuccessfulRemoteDataObject$ ( {
287- ... new ConfigurationProperty ( ) ,
325+ ...new ConfigurationProperty ( ) ,
288326 name : googleAnalytics ,
289327 values : [ ] ,
290328 } ) ) ;
291329
292330 service . initialize ( ) ;
293- expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
331+ expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
294332 } ) ;
295333 it ( 'should filter googleAnalytics when an error occurs' , ( ) => {
296334 configurationDataService . findByPropertyName = jasmine . createSpy ( ) . withArgs ( GOOGLE_ANALYTICS_KEY ) . and . returnValue (
297335 createFailedRemoteDataObject$ ( 'Erro while loading GA' )
298336 ) ;
299337 service . initialize ( ) ;
300- expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
338+ expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
301339 } ) ;
302340 it ( 'should filter googleAnalytics when an invalid payload is retrieved' , ( ) => {
303341 configurationDataService . findByPropertyName = jasmine . createSpy ( ) . withArgs ( GOOGLE_ANALYTICS_KEY ) . and . returnValue (
304342 createSuccessfulRemoteDataObject$ ( null )
305343 ) ;
306344 service . initialize ( ) ;
307- expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
345+ expect ( service . klaroConfig . services ) . not . toContain ( jasmine . objectContaining ( { name : googleAnalytics } ) ) ;
308346 } ) ;
309347 } ) ;
310348} ) ;
0 commit comments