Skip to content

Commit

Permalink
Add new currency provider pricetag() (joke2k#1180)
Browse files Browse the repository at this point in the history
Add cs_CZ, de_AT, de_DE, en_AU, en_CA, en_US, es_ES, fr_CA, fr_FR, it_IT, pl_PL, ru_RU, and sk_SK localizations with their respective currencies.
  • Loading branch information
eumiro authored and fcurella committed Jun 2, 2021
1 parent 4ee6ea2 commit 82aa74a
Show file tree
Hide file tree
Showing 15 changed files with 326 additions and 1 deletion.
9 changes: 9 additions & 0 deletions faker/providers/currency/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ class Provider(BaseProvider):
'XCD': '\u0024', 'YER': '\uFDFC', 'ZWD': '\u0024',
}

price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"]

def currency(self):
return self.random_element(self.currencies)

Expand All @@ -262,3 +264,10 @@ def cryptocurrency_code(self):

def cryptocurrency_name(self):
return self.cryptocurrency()[1]

def pricetag(self):
return (
self.random_element(self.currencies)[0]
+ "\N{no-break space}"
+ self.numerify(self.random_element(self.price_formats))
)
12 changes: 12 additions & 0 deletions faker/providers/currency/cs_CZ/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,#0", "%#,#0", "%##,#0", "%.###,#0", "%#.###,#0"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}Kč"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/de_AT/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/de_DE/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/en_AU/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"]

def pricetag(self):
return (
"$\N{no-break space}"
+ self.numerify(self.random_element(self.price_formats))
)
12 changes: 12 additions & 0 deletions faker/providers/currency/en_CA/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"]

def pricetag(self):
return (
"$\N{no-break space}"
+ self.numerify(self.random_element(self.price_formats))
)
6 changes: 5 additions & 1 deletion faker/providers/currency/en_US/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@


class Provider(CurrencyProvider):
pass

price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"]

def pricetag(self):
return ("$" + self.numerify(self.random_element(self.price_formats)))
8 changes: 8 additions & 0 deletions faker/providers/currency/es_ES/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,11 @@ class Provider(CurrencyProvider):
("ZMW", "Kwacha zambiano"),
("ZWD", "Dólar zimbabuense"),
)

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/fr_CA/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}$"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/fr_FR/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/it_IT/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
12 changes: 12 additions & 0 deletions faker/providers/currency/pl_PL/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}zł"
)
8 changes: 8 additions & 0 deletions faker/providers/currency/ru_RU/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,11 @@ class Provider(CurrencyProvider):
("ZMW", "Замбийская квача"),
("ZWD", "Доллар Зимбабве"),
)

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{cyrillic small letter er}."
)
12 changes: 12 additions & 0 deletions faker/providers/currency/sk_SK/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from .. import Provider as CurrencyProvider


class Provider(CurrencyProvider):

price_formats = ["#,##", "%#,##", "%##,##", "%.###,##", "%#.###,##"]

def pricetag(self):
return (
self.numerify(self.random_element(self.price_formats))
+ "\N{no-break space}\N{euro sign}"
)
176 changes: 176 additions & 0 deletions tests/providers/test_currency.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ def test_cryptocurrency_name(self, faker, num_samples):
name = faker.cryptocurrency_name()
assert isinstance(name, str) and name in self.cryptocurrency_names

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestRuRu:
"""Test ru_RU currency provider"""
Expand All @@ -89,9 +94,95 @@ def test_currency_name(self, faker, num_samples):
name = faker.currency_name()
assert isinstance(name, str) and name in self.currency_names

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestCsCz:
"""Test cs_CZ currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.cs_CZ import Provider as CsCzCurrencyProvider
cls.provider = CsCzCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestDeAt:
"""Test de_AT currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.de_AT import Provider as DeAtCurrencyProvider
cls.provider = DeAtCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestDeDe:
"""Test de_DE currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.de_DE import Provider as DeDeCurrencyProvider
cls.provider = DeDeCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestEnAu:
"""Test en_AU currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.en_AU import Provider as EnAuCurrencyProvider
cls.provider = EnAuCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestEnCa:
"""Test en_CA currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.en_CA import Provider as EnCaCurrencyProvider
cls.provider = EnCaCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestEsEs:
"""Test es_ES currency provider"""

num_samples = 100

@classmethod
Expand All @@ -111,6 +202,91 @@ def test_currency_name(self, faker, num_samples):
name = faker.currency_name()
assert name in self.currency_names

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestFrCa:
"""Test fr_CA currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.fr_CA import Provider as FrCaCurrencyProvider
cls.provider = FrCaCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestFrFr:
"""Test fr_FR currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.fr_FR import Provider as FrFrCurrencyProvider
cls.provider = FrFrCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestItIt:
"""Test it_IT currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.it_IT import Provider as ItItCurrencyProvider
cls.provider = ItItCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestPlPl:
"""Test pl_PL currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.pl_PL import Provider as PlPlCurrencyProvider
cls.provider = PlPlCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestSkSk:
"""Test sk_SK currency provider"""

num_samples = 100

@classmethod
def setup_class(cls):
from faker.providers.currency.sk_SK import Provider as SkSkCurrencyProvider
cls.provider = SkSkCurrencyProvider

def test_pricetag(self, faker, num_samples):
for _ in range(num_samples):
pricetag = faker.pricetag()
assert isinstance(pricetag, str)


class TestSvSe:
"""Test sv_SE currency provider"""
Expand Down

0 comments on commit 82aa74a

Please sign in to comment.