11import { describe , test , expect , vi , beforeEach } from 'vitest'
22import CliTracker from '../cli/cliTracker'
3+ import WebTracker from '../web/webTracker'
34import Tracker from '../common/tracker'
45
56vi . mock ( './storage' )
67vi . mock ( '../cli/fileStorage' )
8+ vi . mock ( '../web/webStorage' )
79vi . mock ( '../gigya/account' )
810
911beforeEach ( ( ) => {
@@ -13,26 +15,27 @@ beforeEach(() => {
1315describe ( 'Tracker' , ( ) => {
1416 const apiKey : string = 'apiKey'
1517 const dataCenter : string = 'eu1'
16- const tracker : Tracker = new CliTracker ( { apiKey, dataCenter } )
18+ const cliTracker : Tracker = new CliTracker ( { apiKey, dataCenter } )
19+ const webTracker : Tracker = new WebTracker ( { apiKey, dataCenter } )
1720 const email :
string = '[email protected] ' 1821 const toolName : string = 'tool name'
1922
20- test ( 'consent is already granted' , ( ) => {
23+ test . each ( [ cliTracker , webTracker ] ) ( 'consent is already granted' , ( tracker ) => {
2124 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( true )
2225 const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
2326 tracker . requestConsentConfirmation ( { } )
2427 expect ( spySetConsentGranted ) . not . toHaveBeenCalled ( )
2528 } )
2629
27- test ( 'consent confirm is not granted' , ( ) => {
30+ test . each ( [ cliTracker , webTracker ] ) ( 'consent confirm is not granted' , ( tracker ) => {
2831 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
2932 const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
3033 vi . spyOn ( tracker . consent , 'askConsentConfirm' ) . mockReturnValue ( Promise . reject ( false ) )
3134 expect ( tracker . requestConsentConfirmation ( { } ) ) . rejects . toBeFalsy ( )
3235 expect ( spySetConsentGranted ) . not . toHaveBeenCalled ( )
3336 } )
3437
35- test ( 'consent confirm is granted' , async ( ) => {
38+ test . each ( [ cliTracker , webTracker ] ) ( 'consent confirm is granted' , async ( tracker ) => {
3639 const consentResponse : boolean = true
3740 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
3841 const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
@@ -43,15 +46,15 @@ describe('Tracker', () => {
4346 expect ( spyAccount ) . toHaveBeenCalledWith ( consentResponse , email )
4447 } )
4548
46- test ( 'consent question is not granted' , ( ) => {
49+ test . each ( [ cliTracker , webTracker ] ) ( 'consent question is not granted' , ( tracker ) => {
4750 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
4851 const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
4952 vi . spyOn ( tracker . consent , 'askConsentQuestion' ) . mockReturnValue ( Promise . resolve ( false ) )
5053 expect ( tracker . requestConsentQuestion ( { } ) ) . resolves . toBeFalsy ( )
5154 expect ( spySetConsentGranted ) . not . toHaveBeenCalled ( )
5255 } )
5356
54- test ( 'consent question is granted' , async ( ) => {
57+ test . each ( [ cliTracker , webTracker ] ) ( 'consent question is granted' , async ( tracker ) => {
5558 const consentResponse : boolean = true
5659 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
5760 const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
@@ -62,14 +65,14 @@ describe('Tracker', () => {
6265 expect ( spyAccount ) . toHaveBeenCalledWith ( consentResponse , expect . stringContaining ( '@automated-usage-tracking-tool.sap' ) )
6366 } )
6467
65- test ( 'track usage without consent' , ( ) => {
68+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage without consent' , ( tracker ) => {
6669 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
6770 const spySetLatestUsage = vi . spyOn ( tracker . storage , 'setLatestUsage' )
6871 tracker . trackUsage ( { toolName } )
6972 expect ( spySetLatestUsage ) . not . toHaveBeenCalled ( )
7073 } )
7174
72- test ( 'track usage with consent' , async ( ) => {
75+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage with consent' , async ( tracker ) => {
7376 const featureName : string = 'feature name'
7477 vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( true )
7578 const spySetLatestUsage = vi . spyOn ( tracker . storage , 'setLatestUsage' )
@@ -78,4 +81,44 @@ describe('Tracker', () => {
7881 expect ( spySetLatestUsage ) . toHaveBeenCalledWith ( toolName , featureName )
7982 expect ( spyAccount ) . toHaveBeenCalled ( )
8083 } )
84+
85+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage with provided consent question answer true' , async ( tracker ) => {
86+ const featureName : string = 'feature name'
87+ vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
88+ const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
89+ const spyAccount = vi . spyOn ( tracker . account , 'setConsent' )
90+ await expect ( tracker . provideConsentQuestionAnswer ( { email, message : 'yes' } ) ) . resolves . toBeTruthy ( )
91+ expect ( spySetConsentGranted ) . toHaveBeenCalledWith ( true , email )
92+ expect ( spyAccount ) . toHaveBeenCalled ( )
93+ } )
94+
95+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage with provided consent question answer false' , async ( tracker ) => {
96+ const featureName : string = 'feature name'
97+ vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
98+ const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
99+ const spyAccount = vi . spyOn ( tracker . account , 'setConsent' )
100+ await expect ( tracker . provideConsentQuestionAnswer ( { email, message : 'no' } ) ) . resolves . toBeFalsy ( )
101+ expect ( spySetConsentGranted ) . not . toHaveBeenCalled ( )
102+ expect ( spyAccount ) . not . toHaveBeenCalled ( )
103+ } )
104+
105+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage with provided consent confirm answer true' , async ( tracker ) => {
106+ const featureName : string = 'feature name'
107+ vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
108+ const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
109+ const spyAccount = vi . spyOn ( tracker . account , 'setConsent' )
110+ await expect ( tracker . provideConsentConfirmAnswer ( { email, message : 'yes' } ) ) . resolves . toBeTruthy ( )
111+ expect ( spySetConsentGranted ) . toHaveBeenCalledWith ( true , email )
112+ expect ( spyAccount ) . toHaveBeenCalled ( )
113+ } )
114+
115+ test . each ( [ cliTracker , webTracker ] ) ( 'track usage with provided consent confirm answer false' , async ( tracker ) => {
116+ const featureName : string = 'feature name'
117+ vi . spyOn ( tracker . storage , 'isConsentGranted' ) . mockReturnValue ( false )
118+ const spySetConsentGranted = vi . spyOn ( tracker . storage , 'setConsentGranted' )
119+ const spyAccount = vi . spyOn ( tracker . account , 'setConsent' )
120+ await expect ( tracker . provideConsentConfirmAnswer ( { email, message : 'no' } ) ) . rejects . toBeFalsy ( )
121+ expect ( spySetConsentGranted ) . not . toHaveBeenCalled ( )
122+ expect ( spyAccount ) . not . toHaveBeenCalled ( )
123+ } )
81124} )
0 commit comments