Skip to content

Commit

Permalink
Merge pull request #6 from SFDO-Tooling/i18n-cleanup
Browse files Browse the repository at this point in the history
Change the format for i18n to something more YAMLishous.
  • Loading branch information
David Glick committed May 13, 2020
2 parents b438e50 + 6153d67 commit ad03371
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 4 deletions.
1 change: 0 additions & 1 deletion snowfakery/data_generator_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,6 @@ def simple_field_vars(self):
"this": obj,
"today": interpreter.globals.today,
"fake": interpreter.faker_template_library,
"fake_i18n": lambda locale: FakerTemplateLibrary(locale),
**interpreter.options,
**interpreter.globals.object_names,
**(obj._values if obj else {}),
Expand Down
5 changes: 5 additions & 0 deletions snowfakery/template_funcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,11 @@ def date_between(self, *, start_date, end_date):
raise
# swallow empty range errors per Python conventions

def i18n_fake(self, locale: str, fake: str):
faker = Faker(locale)
func = getattr(faker, fake)
return func()

def random_number(self, min: int, max: int) -> int:
"""Pick a random number between min and max like Python's randint."""
return random.randint(min, max)
Expand Down
15 changes: 12 additions & 3 deletions tests/CharacterGenTest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
- object: Druid
count: <<num_druids>>
fields:
Name: <<fake_i18n('de_DE').first_name()>>
Name:
i18n_fake:
locale: no_NO
fake: first_name
Level: <<random_number(1,10)>>
Strength:
random_number:
Expand Down Expand Up @@ -88,7 +91,10 @@
- object: Fighter
count: <<num_fighters>>
fields:
Name: <<fake_i18n('no_NO').first_name()>>
Name:
i18n_fake:
locale: ja_JP
fake: first_name
Level: <<random_number(1,10)>>
Strength:
random_number:
Expand Down Expand Up @@ -172,7 +178,10 @@

- object: Paladin
fields:
Name: <<fake_i18n('nl_NL').first_name()>>
Name:
i18n_fake:
locale: nl_NL
fake: first_name
Level: 10 # fixme
Strength:
random_number:
Expand Down
7 changes: 7 additions & 0 deletions tests/i18n.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
- object: foo
count: 10
fields:
japanese_name:
i18n_fake:
locale: ja_JP
fake: name
25 changes: 25 additions & 0 deletions tests/test_i18n.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from io import StringIO
from unittest import mock

from snowfakery.data_generator import generate

write_row_path = "snowfakery.output_streams.DebugOutputStream.write_row"


def row_values(write_row_mock, index, value):
return write_row_mock.mock_calls[index][1][1][value]


class Testi18n:
@mock.patch(write_row_path)
def test_i18n(self, write_row_mock):
yaml = """
- object: foo
fields:
japanese_name:
i18n_fake:
locale: ja_JP
fake: name"""
generate(StringIO(yaml), {})
assert isinstance(row_values(write_row_mock, 0, "japanese_name"), str)

0 comments on commit ad03371

Please sign in to comment.