1# -*- coding: utf-8 -*- 2from __future__ import unicode_literals 3 4from datetime import date, datetime 5 6from parameterized import parameterized, param 7 8import dateparser 9from tests import BaseTestCase 10 11 12class TestParseFunction(BaseTestCase): 13 def setUp(self): 14 super(TestParseFunction, self).setUp() 15 self.result = NotImplemented 16 17 @parameterized.expand([ 18 param(date_string="24 de Janeiro de 2014", expected_date=date(2014, 1, 24)), 19 param(date_string="2 de Enero de 2013", expected_date=date(2013, 1, 2)), 20 param(date_string="January 25, 2014", expected_date=date(2014, 1, 25)), 21 ]) 22 def test_parse_dates_in_different_languages(self, date_string, expected_date): 23 self.when_date_is_parsed(date_string) 24 self.then_parsed_date_is(expected_date) 25 26 @parameterized.expand([ 27 param(date_string="24 de Janeiro de 2014", languages=['pt'], expected_date=date(2014, 1, 24)), 28 ]) 29 def test_dates_which_match_languages_are_parsed(self, date_string, languages, expected_date): 30 self.when_date_is_parsed(date_string, languages=languages) 31 self.then_parsed_date_is(expected_date) 32 33 @parameterized.expand([ 34 param(date_string="January 24, 2014", languages=['pt']), 35 ]) 36 def test_dates_which_do_not_match_languages_are_not_parsed(self, date_string, languages): 37 self.when_date_is_parsed(date_string, languages=languages) 38 self.then_date_was_not_parsed() 39 40 @parameterized.expand([ 41 param(date_string="24 de Janeiro de 2014", locales=['pt-TL'], expected_date=date(2014, 1, 24)), 42 ]) 43 def test_dates_which_match_locales_are_parsed(self, date_string, locales, expected_date): 44 self.when_date_is_parsed(date_string, locales=locales) 45 self.then_parsed_date_is(expected_date) 46 47 @parameterized.expand([ 48 param(date_string="January 24, 2014", locales=['pt-AO']), 49 ]) 50 def test_dates_which_do_not_match_locales_are_not_parsed(self, date_string, locales): 51 self.when_date_is_parsed(date_string, locales=locales) 52 self.then_date_was_not_parsed() 53 54 def when_date_is_parsed(self, date_string, languages=None, locales=None): 55 self.result = dateparser.parse(date_string, languages=languages, locales=locales) 56 57 def then_parsed_date_is(self, expected_date): 58 self.assertEquals(self.result, datetime.combine(expected_date, datetime.min.time())) 59 60 def then_date_was_not_parsed(self): 61 self.assertIsNone(self.result) 62