# -*- coding: utf-8 -*-

"""\
(c) Copyright.  All rights reserved.

"""

from __future__ import unicode_literals

from unittest import TestCase

import iso8601
from nose.plugins.attrib import attr

from primordial.timeutils import iso8601_utc, UTC


@attr('unit')
class TestIso8601UTCFormatter(TestCase):
    def test_iso8601_utc(self):
        dt = iso8601.parse_date('2012-04-22T17:44:35.123000Z')
        dt_s = iso8601_utc(dt)
        self.assertEqual(dt_s, '2012-04-22T17:44:35.123000Z')

    def test_iso8601_utc_offset(self):
        dt = iso8601.parse_date('2012-04-22T17:44:35.123000-05:00')
        dt_s = iso8601_utc(dt)
        self.assertEqual(dt_s, '2012-04-22T22:44:35.123000Z')

    def test_iso8601_utc_no_microseconds(self):
        dt = iso8601.parse_date('2012-04-22T17:44:35.123000Z')
        dt_s = iso8601_utc(dt, microseconds=False)
        self.assertEqual(dt_s, '2012-04-22T17:44:35Z')

    def test_iso8601_utc_naive(self):
        dt = iso8601.parse_date('2012-04-22T17:44:35.123000', default_timezone=None)
        dt_s = iso8601_utc(dt, tz=UTC)
        self.assertEqual(dt_s, '2012-04-22T17:44:35.123000Z')

    def test_iso8601_utc_naive_notz(self):
        dt = iso8601.parse_date('2012-04-22T17:44:35.123000', default_timezone=None)
        with self.assertRaises(ValueError):
            iso8601_utc(dt)
