Skip to content

Commit 1c27d54

Browse files
author
Varun Rathore
committed
Added fix for comments
1 parent c736126 commit 1c27d54

File tree

2 files changed

+39
-28
lines changed

2 files changed

+39
-28
lines changed

firebase_admin/remote_config.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,15 @@ def get_string(self, key):
169169
return self.get_value(key).as_string()
170170

171171
def get_int(self, key):
172-
return self.get_value(key).as_number()
172+
return self.get_value(key).as_int()
173+
174+
def get_float(self, key):
175+
return self.get_value(key).as_float()
173176

174177
def get_value(self, key):
175-
return self._config_values[key]
178+
if self._config_values[key]:
179+
return self._config_values[key]
180+
return _Value('static')
176181

177182

178183
class _RemoteConfigService:
@@ -622,7 +627,8 @@ class _Value:
622627
"""
623628
DEFAULT_VALUE_FOR_BOOLEAN = False
624629
DEFAULT_VALUE_FOR_STRING = ''
625-
DEFAULT_VALUE_FOR_NUMBER = 0
630+
DEFAULT_VALUE_FOR_INTEGER = 0
631+
DEFAULT_VALUE_FOR_FLOAT_NUMBER = 0.0
626632
BOOLEAN_TRUTHY_VALUES = ['1', 'true', 't', 'yes', 'y', 'on']
627633

628634
def __init__(self, source: ValueSource, value: str = DEFAULT_VALUE_FOR_STRING):
@@ -637,6 +643,8 @@ def __init__(self, source: ValueSource, value: str = DEFAULT_VALUE_FOR_STRING):
637643

638644
def as_string(self) -> str:
639645
"""Returns the value as a string."""
646+
if self.source == 'static':
647+
return self.DEFAULT_VALUE_FOR_STRING
640648
return self.value
641649

642650
def as_boolean(self) -> bool:
@@ -645,14 +653,17 @@ def as_boolean(self) -> bool:
645653
return self.DEFAULT_VALUE_FOR_BOOLEAN
646654
return str(self.value).lower() in self.BOOLEAN_TRUTHY_VALUES
647655

648-
def as_number(self) -> float:
656+
def as_int(self) -> float:
649657
"""Returns the value as a number."""
650658
if self.source == 'static':
651-
return self.DEFAULT_VALUE_FOR_NUMBER
652-
try:
653-
return float(self.value)
654-
except ValueError:
655-
return self.DEFAULT_VALUE_FOR_NUMBER
659+
return self.DEFAULT_VALUE_FOR_INTEGER
660+
return self.value
661+
662+
def as_float(self) -> float:
663+
"""Returns the value as a number."""
664+
if self.source == 'static':
665+
return self.DEFAULT_VALUE_FOR_FLOAT_NUMBER
666+
return float(self.value)
656667

657668
def get_source(self) -> ValueSource:
658669
"""Returns the source of the value."""

tests/test_remote_config.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def test_evaluate_or_and_true_condition_true(self):
110110
server_template = remote_config.init_server_template(
111111
app=app,
112112
default_config=default_config,
113-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
113+
template_data=ServerTemplateData('etag', template_data)
114114
)
115115

116116
server_config = server_template.evaluate()
@@ -154,7 +154,7 @@ def test_evaluate_or_and_false_condition_false(self):
154154
server_template = remote_config.init_server_template(
155155
app=app,
156156
default_config=default_config,
157-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
157+
template_data=ServerTemplateData('etag', template_data)
158158
)
159159

160160
server_config = server_template.evaluate()
@@ -185,7 +185,7 @@ def test_evaluate_non_or_condition(self):
185185
server_template = remote_config.init_server_template(
186186
app=app,
187187
default_config=default_config,
188-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
188+
template_data=ServerTemplateData('etag', template_data)
189189
)
190190

191191
server_config = server_template.evaluate()
@@ -251,7 +251,7 @@ def test_evaluate_return_conditional_values_honor_order(self):
251251
server_template = remote_config.init_server_template(
252252
app=app,
253253
default_config=default_config,
254-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
254+
template_data=ServerTemplateData('etag', template_data)
255255
)
256256
server_config = server_template.evaluate()
257257
assert server_config.get_string('dog_type') == 'corgi'
@@ -264,7 +264,7 @@ def test_evaluate_default_when_no_param(self):
264264
server_template = remote_config.init_server_template(
265265
app=app,
266266
default_config=default_config,
267-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
267+
template_data=ServerTemplateData('etag', template_data)
268268
)
269269
server_config = server_template.evaluate()
270270
assert server_config.get_boolean('promo_enabled') == default_config.get('promo_enabled')
@@ -280,7 +280,7 @@ def test_evaluate_default_when_no_default_value(self):
280280
server_template = remote_config.init_server_template(
281281
app=app,
282282
default_config=default_config,
283-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
283+
template_data=ServerTemplateData('etag', template_data)
284284
)
285285
server_config = server_template.evaluate()
286286
assert server_config.get_string('default_value') == default_config.get('default_value')
@@ -297,7 +297,7 @@ def test_evaluate_default_when_in_default(self):
297297
server_template = remote_config.init_server_template(
298298
app=app,
299299
default_config=default_config,
300-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
300+
template_data=ServerTemplateData('etag', template_data)
301301
)
302302
server_config = server_template.evaluate()
303303
assert server_config.get_string('inapp_default') == default_config.get('inapp_default')
@@ -312,7 +312,7 @@ def test_evaluate_default_when_defined(self):
312312
server_template = remote_config.init_server_template(
313313
app=app,
314314
default_config=default_config,
315-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
315+
template_data=ServerTemplateData('etag', template_data)
316316
)
317317
server_config = server_template.evaluate()
318318
assert server_config.get_value('dog_type').as_string() == 'shiba'
@@ -327,12 +327,12 @@ def test_evaluate_return_numeric_value(self):
327327
server_template = remote_config.init_server_template(
328328
app=app,
329329
default_config=default_config,
330-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
330+
template_data=ServerTemplateData('etag', template_data)
331331
)
332332
server_config = server_template.evaluate()
333333
assert server_config.get_int('dog_age') == 12
334334

335-
def test_evaluate_return__value(self):
335+
def test_evaluate_return_boolean_value(self):
336336
app = firebase_admin.get_app()
337337
template_data = SERVER_REMOTE_CONFIG_RESPONSE
338338
default_config = {
@@ -341,10 +341,10 @@ def test_evaluate_return__value(self):
341341
server_template = remote_config.init_server_template(
342342
app=app,
343343
default_config=default_config,
344-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
344+
template_data=ServerTemplateData('etag', template_data)
345345
)
346346
server_config = server_template.evaluate()
347-
assert server_config.get_int('dog_is_cute')
347+
assert server_config.get_boolean('dog_is_cute')
348348

349349
def test_evaluate_unknown_operator_to_false(self):
350350
app = firebase_admin.get_app()
@@ -383,7 +383,7 @@ def test_evaluate_unknown_operator_to_false(self):
383383
server_template = remote_config.init_server_template(
384384
app=app,
385385
default_config=default_config,
386-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
386+
template_data=ServerTemplateData('etag', template_data)
387387
)
388388
server_config = server_template.evaluate(context)
389389
assert not server_config.get_boolean('is_enabled')
@@ -427,7 +427,7 @@ def test_evaluate_less_or_equal_to_max_to_true(self):
427427
server_template = remote_config.init_server_template(
428428
app=app,
429429
default_config=default_config,
430-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
430+
template_data=ServerTemplateData('etag', template_data)
431431
)
432432
server_config = server_template.evaluate(context)
433433
assert server_config.get_boolean('is_enabled')
@@ -470,7 +470,7 @@ def test_evaluate_undefined_micropercent_to_false(self):
470470
server_template = remote_config.init_server_template(
471471
app=app,
472472
default_config=default_config,
473-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
473+
template_data=ServerTemplateData('etag', template_data)
474474
)
475475
server_config = server_template.evaluate(context)
476476
assert not server_config.get_boolean('is_enabled')
@@ -513,7 +513,7 @@ def test_evaluate_undefined_micropercentrange_to_false(self):
513513
server_template = remote_config.init_server_template(
514514
app=app,
515515
default_config=default_config,
516-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
516+
template_data=ServerTemplateData('etag', template_data)
517517
)
518518
server_config = server_template.evaluate(context)
519519
assert not server_config.get_boolean('is_enabled')
@@ -560,7 +560,7 @@ def test_evaluate_between_min_max_to_true(self):
560560
server_template = remote_config.init_server_template(
561561
app=app,
562562
default_config=default_config,
563-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
563+
template_data=ServerTemplateData('etag', template_data)
564564
)
565565
server_config = server_template.evaluate(context)
566566
assert server_config.get_boolean('is_enabled')
@@ -607,7 +607,7 @@ def test_evaluate_between_equal_bounds_to_false(self):
607607
server_template = remote_config.init_server_template(
608608
app=app,
609609
default_config=default_config,
610-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
610+
template_data=ServerTemplateData('etag', template_data)
611611
)
612612
server_config = server_template.evaluate(context)
613613
assert not server_config.get_boolean('is_enabled')
@@ -735,7 +735,7 @@ def evaluate_random_assignments(self, condition, num_of_assignments, mock_app, d
735735
server_template = remote_config.init_server_template(
736736
app=mock_app,
737737
default_config=default_config,
738-
template_data=ServerTemplateData('etag', template_data) # Use ServerTemplateData here
738+
template_data=ServerTemplateData('etag', template_data)
739739
)
740740

741741
for _ in range(num_of_assignments):

0 commit comments

Comments
 (0)