@@ -15,7 +15,7 @@ describe('loaded() with flags', () => {
15
15
...config ,
16
16
loaded : ( ph ) => {
17
17
ph . capture = jest . fn ( )
18
- ph . _send_request = jest . fn ( ( { callback } ) => callback ?.( { status : 200 , json : { } } ) )
18
+ ph . _send_request = jest . fn ( ( { callback } ) => callback ?.( { statusCode : 200 , json : { } } ) )
19
19
ph . _start_queue_if_opted_in = jest . fn ( )
20
20
21
21
jest . spyOn ( ph . featureFlags , 'setGroupPropertiesForFlags' )
@@ -106,4 +106,57 @@ describe('loaded() with flags', () => {
106
106
expect ( instance . _send_request ) . toHaveBeenCalledTimes ( 1 )
107
107
} )
108
108
} )
109
+
110
+ describe ( 'quota limiting' , ( ) => {
111
+ beforeEach ( async ( ) => {
112
+ instance = await createPosthog ( )
113
+ } )
114
+
115
+ it . each ( [
116
+ {
117
+ name : 'does not process feature flags when quota limited' ,
118
+ response : {
119
+ quotaLimited : [ 'feature_flags' ] ,
120
+ featureFlags : { 'test-flag' : true } ,
121
+ } ,
122
+ expectedCall : false ,
123
+ expectedArgs : undefined ,
124
+ } ,
125
+ {
126
+ name : 'processes feature flags when not quota limited' ,
127
+ response : {
128
+ featureFlags : { 'test-flag' : true } ,
129
+ } ,
130
+ expectedCall : true ,
131
+ expectedArgs : { featureFlags : { 'test-flag' : true } } ,
132
+ } ,
133
+ {
134
+ name : 'processes feature flags when other resources are quota limited' ,
135
+ response : {
136
+ quotaLimited : [ 'recordings' ] ,
137
+ featureFlags : { 'test-flag' : true } ,
138
+ } ,
139
+ expectedCall : true ,
140
+ expectedArgs : { quotaLimited : [ 'recordings' ] , featureFlags : { 'test-flag' : true } } ,
141
+ } ,
142
+ ] ) ( '$name' , async ( { response, expectedCall, expectedArgs } ) => {
143
+ instance . _send_request = jest . fn ( ( { callback } ) =>
144
+ callback ?.( {
145
+ statusCode : 200 ,
146
+ json : response ,
147
+ } )
148
+ )
149
+
150
+ const receivedFeatureFlagsSpy = jest . spyOn ( instance . featureFlags , 'receivedFeatureFlags' )
151
+
152
+ instance . featureFlags . _callDecideEndpoint ( )
153
+ jest . runAllTimers ( )
154
+
155
+ if ( expectedCall ) {
156
+ expect ( receivedFeatureFlagsSpy ) . toHaveBeenCalledWith ( expectedArgs , false )
157
+ } else {
158
+ expect ( receivedFeatureFlagsSpy ) . not . toHaveBeenCalled ( )
159
+ }
160
+ } )
161
+ } )
109
162
} )
0 commit comments