TestToolsDates.test_factset_time_pattern()   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
c 1
b 0
f 0
dl 0
loc 9
rs 9.6666
1
from datetime import datetime, date
0 ignored issues
show
Coding Style introduced by
This module should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
2
3
import pytz
0 ignored issues
show
Configuration introduced by
The import pytz could not be resolved.

This can be caused by one of the following:

1. Missing Dependencies

This error could indicate a configuration issue of Pylint. Make sure that your libraries are available by adding the necessary commands.

# .scrutinizer.yml
before_commands:
    - sudo pip install abc # Python2
    - sudo pip3 install abc # Python3
Tip: We are currently not using virtualenv to run pylint, when installing your modules make sure to use the command for the correct version.

2. Missing __init__.py files

This error could also result from missing __init__.py files in your module folders. Make sure that you place one file in each sub-folder.

Loading history...
4
import unittest
5
6
from foil.dates import parse_date, DateTimeParser, _datetime_to_tuple
7
8
9
test_dt_data = [
0 ignored issues
show
Coding Style Naming introduced by
The name test_dt_data does not conform to the constant naming conventions ((([A-Z_][A-Z0-9_]*)|(__.*__))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
10
    ('2015-04-03', datetime(2015, 4, 3)),
11
    ('2015-04-03T06:34:22', datetime(2015, 4, 3, 6, 34, 22)),
12
    ('2015-04-03T06:34:22.234', datetime(2015, 4, 3, 6, 34, 22, 234000)),
13
    ('2014-06-29T02:25:20 EST', datetime(2014, 6, 29, 6, 25, 20, tzinfo=pytz.utc)),
14
    ('2013-02-07T09:34:22 EDT', datetime(2013, 2, 7, 14, 34, 22, tzinfo=pytz.utc))]
15
16
17
def dt_dict():
18
    return dict(year='2014', month='07', day='03', hour='13',
19
                minute='02', second='45', microsecond='321')
20
21
22
class TestToolsDates(unittest.TestCase):
23
24
    def setUp(self):
25
        self.dt_dict = dt_dict()
26
27
    def test_factset_time_pattern(self):
28
        date_parser = DateTimeParser()
29
30
        for t in test_dt_data:
31
            data = t[0]
32
            expected = t[1]
33
            result = date_parser.parse(data)
34
            with self.subTest(data=data):
35
                self.assertEqual(expected, result)
36
37
    def test_parse_date(self):
38
        expected = date(2015, 4, 3)
39
        result = parse_date('2015-04-03')
40
41
        self.assertEqual(expected, result)
42
43
    def test_all_string_components(self):
44
        expected = (2014, 7, 3, 13, 2, 45, 321)
45
        result = _datetime_to_tuple(self.dt_dict)
46
47
        self.assertEqual(expected, result)
48
49
    def test_null_microsecond(self):
50
        self.dt_dict['microsecond'] = None
51
52
        expected = (2014, 7, 3, 13, 2, 45, 0)
53
        result = _datetime_to_tuple(self.dt_dict)
54
55
        self.assertEqual(expected, result)
56
57
    def test_no_microsecond(self):
58
        self.dt_dict['hour'] = None
59
60
        expected = (2014, 7, 3, 0, 2, 45, 321)
61
        result = _datetime_to_tuple(self.dt_dict)
62
63
        self.assertEqual(expected, result)
64
65
    def test_fail_no_month(self):
66
        self.dt_dict['month'] = None
67
68
        with self.assertRaises(TypeError):
69
            _datetime_to_tuple(dt_dict)
70