diff --git a/faker/providers/currency/__init__.py b/faker/providers/currency/__init__.py index f6842e0e71..bce353ffa9 100644 --- a/faker/providers/currency/__init__.py +++ b/faker/providers/currency/__init__.py @@ -237,6 +237,8 @@ class Provider(BaseProvider): 'XCD': '\u0024', 'YER': '\uFDFC', 'ZWD': '\u0024', } + price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"] + def currency(self): return self.random_element(self.currencies) @@ -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)) + ) diff --git a/faker/providers/currency/cs_CZ/__init__.py b/faker/providers/currency/cs_CZ/__init__.py new file mode 100644 index 0000000000..50646d1b58 --- /dev/null +++ b/faker/providers/currency/cs_CZ/__init__.py @@ -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č" + ) diff --git a/faker/providers/currency/de_AT/__init__.py b/faker/providers/currency/de_AT/__init__.py new file mode 100644 index 0000000000..556de53562 --- /dev/null +++ b/faker/providers/currency/de_AT/__init__.py @@ -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}" + ) diff --git a/faker/providers/currency/de_DE/__init__.py b/faker/providers/currency/de_DE/__init__.py new file mode 100644 index 0000000000..556de53562 --- /dev/null +++ b/faker/providers/currency/de_DE/__init__.py @@ -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}" + ) diff --git a/faker/providers/currency/en_AU/__init__.py b/faker/providers/currency/en_AU/__init__.py new file mode 100644 index 0000000000..767844a259 --- /dev/null +++ b/faker/providers/currency/en_AU/__init__.py @@ -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)) + ) diff --git a/faker/providers/currency/en_CA/__init__.py b/faker/providers/currency/en_CA/__init__.py new file mode 100644 index 0000000000..767844a259 --- /dev/null +++ b/faker/providers/currency/en_CA/__init__.py @@ -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)) + ) diff --git a/faker/providers/currency/en_US/__init__.py b/faker/providers/currency/en_US/__init__.py index 977d614cb6..4a7dd84088 100644 --- a/faker/providers/currency/en_US/__init__.py +++ b/faker/providers/currency/en_US/__init__.py @@ -2,4 +2,8 @@ class Provider(CurrencyProvider): - pass + + price_formats = ["#.##", "%#.##", "%##.##", "%,###.##", "%#,###.##"] + + def pricetag(self): + return ("$" + self.numerify(self.random_element(self.price_formats))) diff --git a/faker/providers/currency/es_ES/__init__.py b/faker/providers/currency/es_ES/__init__.py index e7f9006b9c..e2864b9c14 100644 --- a/faker/providers/currency/es_ES/__init__.py +++ b/faker/providers/currency/es_ES/__init__.py @@ -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}" + ) diff --git a/faker/providers/currency/fr_CA/__init__.py b/faker/providers/currency/fr_CA/__init__.py new file mode 100644 index 0000000000..702102d675 --- /dev/null +++ b/faker/providers/currency/fr_CA/__init__.py @@ -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}$" + ) diff --git a/faker/providers/currency/fr_FR/__init__.py b/faker/providers/currency/fr_FR/__init__.py new file mode 100644 index 0000000000..556de53562 --- /dev/null +++ b/faker/providers/currency/fr_FR/__init__.py @@ -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}" + ) diff --git a/faker/providers/currency/it_IT/__init__.py b/faker/providers/currency/it_IT/__init__.py new file mode 100644 index 0000000000..556de53562 --- /dev/null +++ b/faker/providers/currency/it_IT/__init__.py @@ -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}" + ) diff --git a/faker/providers/currency/pl_PL/__init__.py b/faker/providers/currency/pl_PL/__init__.py new file mode 100644 index 0000000000..6d2f0c6640 --- /dev/null +++ b/faker/providers/currency/pl_PL/__init__.py @@ -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ł" + ) diff --git a/faker/providers/currency/ru_RU/__init__.py b/faker/providers/currency/ru_RU/__init__.py index 72f3f778a6..840b1d69ec 100644 --- a/faker/providers/currency/ru_RU/__init__.py +++ b/faker/providers/currency/ru_RU/__init__.py @@ -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}." + ) diff --git a/faker/providers/currency/sk_SK/__init__.py b/faker/providers/currency/sk_SK/__init__.py new file mode 100644 index 0000000000..556de53562 --- /dev/null +++ b/faker/providers/currency/sk_SK/__init__.py @@ -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}" + ) diff --git a/tests/providers/test_currency.py b/tests/providers/test_currency.py index 81bd2220c7..64b14bcf54 100644 --- a/tests/providers/test_currency.py +++ b/tests/providers/test_currency.py @@ -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""" @@ -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 @@ -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"""