Skip to content

Commit 11bb8dc

Browse files
author
Varun Rathore
committed
Changed structure of test
1 parent 4cd1eb1 commit 11bb8dc

File tree

1 file changed

+46
-73
lines changed

1 file changed

+46
-73
lines changed

tests/test_remote_config.py

Lines changed: 46 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
"""Tests for firebase_admin.remote_config."""
1616
import uuid
17-
from unittest import mock
1817
import firebase_admin
1918
from firebase_admin.remote_config import (
2019
PercentConditionOperator,
2120
ServerTemplateData)
2221
from firebase_admin import remote_config
22+
from tests import testutils
2323

2424
VERSION_INFO = {
2525
'versionNumber': '86',
@@ -63,25 +63,17 @@
6363
}
6464

6565
class TestEvaluate:
66-
def set_up(self):
67-
# Create a more specific mock for firebase_admin.App
68-
self.mock_app = mock.create_autospec(firebase_admin.App)
69-
self.mock_app.project_id = 'mock-project-id'
70-
self.mock_app.name = 'mock-app-name'
66+
@classmethod
67+
def setup_class(cls):
68+
cred = testutils.MockCredential()
69+
firebase_admin.initialize_app(cred, {'projectId': 'project-id'})
7170

72-
# Mock initialize_app to return the mock App instance
73-
self.mock_initialize_app = mock.patch('firebase_admin.initialize_app').start()
74-
self.mock_initialize_app.return_value = self.mock_app
75-
76-
# Mock the app registry
77-
self.mock_get_app = mock.patch('firebase_admin._utils.get_app_service').start()
78-
self.mock_get_app.return_value = self.mock_app
79-
80-
def tear_down(self):
81-
mock.patch.stopall()
71+
@classmethod
72+
def teardown_class(cls):
73+
testutils.cleanup_apps()
8274

8375
def test_evaluate_or_and_true_condition_true(self):
84-
self.set_up()
76+
app = firebase_admin.get_app()
8577
default_config = {'param1': 'in_app_default_param1', 'param3': 'in_app_default_param3'}
8678
condition = {
8779
'name': 'is_true',
@@ -116,17 +108,16 @@ def test_evaluate_or_and_true_condition_true(self):
116108
'etag': '123'
117109
}
118110
server_template = remote_config.init_server_template(
119-
app=self.mock_app,
111+
app=app,
120112
default_config=default_config,
121113
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
122114
)
123115

124116
server_config = server_template.evaluate()
125117
assert server_config.get_boolean('is_enabled')
126-
self.tear_down()
127118

128119
def test_evaluate_or_and_false_condition_false(self):
129-
self.set_up()
120+
app = firebase_admin.get_app()
130121
default_config = {'param1': 'in_app_default_param1', 'param3': 'in_app_default_param3'}
131122
condition = {
132123
'name': 'is_true',
@@ -161,17 +152,16 @@ def test_evaluate_or_and_false_condition_false(self):
161152
'etag': '123'
162153
}
163154
server_template = remote_config.init_server_template(
164-
app=self.mock_app,
155+
app=app,
165156
default_config=default_config,
166157
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
167158
)
168159

169160
server_config = server_template.evaluate()
170161
assert not server_config.get_boolean('is_enabled')
171-
self.tear_down()
172162

173163
def test_evaluate_non_or_condition(self):
174-
self.set_up()
164+
app = firebase_admin.get_app()
175165
default_config = {'param1': 'in_app_default_param1', 'param3': 'in_app_default_param3'}
176166
condition = {
177167
'name': 'is_true',
@@ -193,17 +183,16 @@ def test_evaluate_non_or_condition(self):
193183
'etag': '123'
194184
}
195185
server_template = remote_config.init_server_template(
196-
app=self.mock_app,
186+
app=app,
197187
default_config=default_config,
198188
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
199189
)
200190

201191
server_config = server_template.evaluate()
202192
assert server_config.get_boolean('is_enabled')
203-
self.tear_down()
204193

205194
def test_evaluate_return_conditional_values_honor_order(self):
206-
self.set_up()
195+
app = firebase_admin.get_app()
207196
default_config = {'param1': 'in_app_default_param1', 'param3': 'in_app_default_param3'}
208197
template_data = {
209198
'conditions': [
@@ -260,47 +249,44 @@ def test_evaluate_return_conditional_values_honor_order(self):
260249
'etag': '123'
261250
}
262251
server_template = remote_config.init_server_template(
263-
app=self.mock_app,
252+
app=app,
264253
default_config=default_config,
265254
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
266255
)
267256
server_config = server_template.evaluate()
268257
assert server_config.get_string('dog_type') == 'corgi'
269-
self.tear_down()
270258

271259
def test_evaluate_default_when_no_param(self):
272-
self.set_up()
260+
app = firebase_admin.get_app()
273261
default_config = {'promo_enabled': False, 'promo_discount': 20,}
274262
template_data = SERVER_REMOTE_CONFIG_RESPONSE
275263
template_data['parameters'] = {}
276264
server_template = remote_config.init_server_template(
277-
app=self.mock_app,
265+
app=app,
278266
default_config=default_config,
279267
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
280268
)
281269
server_config = server_template.evaluate()
282270
assert server_config.get_boolean('promo_enabled') == default_config.get('promo_enabled')
283271
assert server_config.get_int('promo_discount') == default_config.get('promo_discount')
284-
self.tear_down()
285272

286273
def test_evaluate_default_when_no_default_value(self):
287-
self.set_up()
274+
app = firebase_admin.get_app()
288275
default_config = {'default_value': 'local default'}
289276
template_data = SERVER_REMOTE_CONFIG_RESPONSE
290277
template_data['parameters'] = {
291278
'default_value': {}
292279
}
293280
server_template = remote_config.init_server_template(
294-
app=self.mock_app,
281+
app=app,
295282
default_config=default_config,
296283
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
297284
)
298285
server_config = server_template.evaluate()
299286
assert server_config.get_string('default_value') == default_config.get('default_value')
300-
self.tear_down()
301287

302288
def test_evaluate_default_when_in_default(self):
303-
self.set_up()
289+
app = firebase_admin.get_app()
304290
template_data = SERVER_REMOTE_CONFIG_RESPONSE
305291
template_data['parameters'] = {
306292
'remote_default_value': {}
@@ -309,63 +295,59 @@ def test_evaluate_default_when_in_default(self):
309295
'inapp_default': '🐕'
310296
}
311297
server_template = remote_config.init_server_template(
312-
app=self.mock_app,
298+
app=app,
313299
default_config=default_config,
314300
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
315301
)
316302
server_config = server_template.evaluate()
317303
assert server_config.get_string('inapp_default') == default_config.get('inapp_default')
318-
self.tear_down()
319304

320305
def test_evaluate_default_when_defined(self):
321-
self.set_up()
306+
app = firebase_admin.get_app()
322307
template_data = SERVER_REMOTE_CONFIG_RESPONSE
323308
template_data['parameters'] = {}
324309
default_config = {
325310
'dog_type': 'shiba'
326311
}
327312
server_template = remote_config.init_server_template(
328-
app=self.mock_app,
313+
app=app,
329314
default_config=default_config,
330315
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
331316
)
332317
server_config = server_template.evaluate()
333318
assert server_config.get_value('dog_type').as_string() == 'shiba'
334319
assert server_config.get_value('dog_type').get_source() == 'default'
335-
self.tear_down()
336320

337321
def test_evaluate_return_numeric_value(self):
338-
self.set_up()
322+
app = firebase_admin.get_app()
339323
template_data = SERVER_REMOTE_CONFIG_RESPONSE
340324
default_config = {
341325
'dog_age': 12
342326
}
343327
server_template = remote_config.init_server_template(
344-
app=self.mock_app,
328+
app=app,
345329
default_config=default_config,
346330
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
347331
)
348332
server_config = server_template.evaluate()
349333
assert server_config.get_int('dog_age') == 12
350-
self.tear_down()
351334

352335
def test_evaluate_return__value(self):
353-
self.set_up()
336+
app = firebase_admin.get_app()
354337
template_data = SERVER_REMOTE_CONFIG_RESPONSE
355338
default_config = {
356339
'dog_is_cute': True
357340
}
358341
server_template = remote_config.init_server_template(
359-
app=self.mock_app,
342+
app=app,
360343
default_config=default_config,
361344
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
362345
)
363346
server_config = server_template.evaluate()
364347
assert server_config.get_int('dog_is_cute')
365-
self.tear_down()
366348

367349
def test_evaluate_unknown_operator_to_false(self):
368-
self.set_up()
350+
app = firebase_admin.get_app()
369351
condition = {
370352
'name': 'is_true',
371353
'condition': {
@@ -399,16 +381,15 @@ def test_evaluate_unknown_operator_to_false(self):
399381
}
400382
context = {'randomization_id': '123'}
401383
server_template = remote_config.init_server_template(
402-
app=self.mock_app,
384+
app=app,
403385
default_config=default_config,
404386
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
405387
)
406388
server_config = server_template.evaluate(context)
407389
assert not server_config.get_boolean('is_enabled')
408-
self.tear_down()
409390

410391
def test_evaluate_less_or_equal_to_max_to_true(self):
411-
self.set_up()
392+
app = firebase_admin.get_app()
412393
condition = {
413394
'name': 'is_true',
414395
'condition': {
@@ -444,16 +425,15 @@ def test_evaluate_less_or_equal_to_max_to_true(self):
444425
}
445426
context = {'randomization_id': '123'}
446427
server_template = remote_config.init_server_template(
447-
app=self.mock_app,
428+
app=app,
448429
default_config=default_config,
449430
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
450431
)
451432
server_config = server_template.evaluate(context)
452433
assert server_config.get_boolean('is_enabled')
453-
self.tear_down()
454434

455435
def test_evaluate_undefined_micropercent_to_false(self):
456-
self.set_up()
436+
app = firebase_admin.get_app()
457437
condition = {
458438
'name': 'is_true',
459439
'condition': {
@@ -488,16 +468,15 @@ def test_evaluate_undefined_micropercent_to_false(self):
488468
}
489469
context = {'randomization_id': '123'}
490470
server_template = remote_config.init_server_template(
491-
app=self.mock_app,
471+
app=app,
492472
default_config=default_config,
493473
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
494474
)
495475
server_config = server_template.evaluate(context)
496476
assert not server_config.get_boolean('is_enabled')
497-
self.tear_down()
498477

499478
def test_evaluate_undefined_micropercentrange_to_false(self):
500-
self.set_up()
479+
app = firebase_admin.get_app()
501480
condition = {
502481
'name': 'is_true',
503482
'condition': {
@@ -532,16 +511,15 @@ def test_evaluate_undefined_micropercentrange_to_false(self):
532511
}
533512
context = {'randomization_id': '123'}
534513
server_template = remote_config.init_server_template(
535-
app=self.mock_app,
514+
app=app,
536515
default_config=default_config,
537516
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
538517
)
539518
server_config = server_template.evaluate(context)
540519
assert not server_config.get_boolean('is_enabled')
541-
self.tear_down()
542520

543521
def test_evaluate_between_min_max_to_true(self):
544-
self.set_up()
522+
app = firebase_admin.get_app()
545523
condition = {
546524
'name': 'is_true',
547525
'condition': {
@@ -580,16 +558,15 @@ def test_evaluate_between_min_max_to_true(self):
580558
}
581559
context = {'randomization_id': '123'}
582560
server_template = remote_config.init_server_template(
583-
app=self.mock_app,
561+
app=app,
584562
default_config=default_config,
585563
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
586564
)
587565
server_config = server_template.evaluate(context)
588566
assert server_config.get_boolean('is_enabled')
589-
self.tear_down()
590567

591568
def test_evaluate_between_equal_bounds_to_false(self):
592-
self.set_up()
569+
app = firebase_admin.get_app()
593570
condition = {
594571
'name': 'is_true',
595572
'condition': {
@@ -628,16 +605,15 @@ def test_evaluate_between_equal_bounds_to_false(self):
628605
}
629606
context = {'randomization_id': '123'}
630607
server_template = remote_config.init_server_template(
631-
app=self.mock_app,
608+
app=app,
632609
default_config=default_config,
633610
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
634611
)
635612
server_config = server_template.evaluate(context)
636613
assert not server_config.get_boolean('is_enabled')
637-
self.tear_down()
638614

639615
def test_evaluate_less_or_equal_to_approx(self):
640-
self.set_up()
616+
app = firebase_admin.get_app()
641617
condition = {
642618
'name': 'is_true',
643619
'condition': {
@@ -661,14 +637,13 @@ def test_evaluate_less_or_equal_to_approx(self):
661637
}
662638

663639
truthy_assignments = self.evaluate_random_assignments(condition, 100000,
664-
self.mock_app, default_config)
640+
app, default_config)
665641
tolerance = 284
666642
assert truthy_assignments >= 10000 - tolerance
667643
assert truthy_assignments <= 10000 + tolerance
668-
self.tear_down()
669644

670645
def test_evaluate_between_approx(self):
671-
self.set_up()
646+
app = firebase_admin.get_app()
672647
condition = {
673648
'name': 'is_true',
674649
'condition': {
@@ -695,14 +670,13 @@ def test_evaluate_between_approx(self):
695670
}
696671

697672
truthy_assignments = self.evaluate_random_assignments(condition, 100000,
698-
self.mock_app, default_config)
673+
app, default_config)
699674
tolerance = 379
700675
assert truthy_assignments >= 20000 - tolerance
701676
assert truthy_assignments <= 20000 + tolerance
702-
self.tear_down()
703677

704678
def test_evaluate_between_interquartile_range_accuracy(self):
705-
self.set_up()
679+
app = firebase_admin.get_app()
706680
condition = {
707681
'name': 'is_true',
708682
'condition': {
@@ -729,11 +703,10 @@ def test_evaluate_between_interquartile_range_accuracy(self):
729703
}
730704

731705
truthy_assignments = self.evaluate_random_assignments(condition, 100000,
732-
self.mock_app, default_config)
706+
app, default_config)
733707
tolerance = 474
734708
assert truthy_assignments >= 50000 - tolerance
735709
assert truthy_assignments <= 50000 + tolerance
736-
self.tear_down()
737710

738711
def evaluate_random_assignments(self, condition, num_of_assignments, mock_app, default_config):
739712
"""Evaluates random assignments based on a condition.

0 commit comments

Comments
 (0)