aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/tests/services/test_core.py
blob: 556f3d9054e67eafa91fff11396cddc4e95424fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python
# -*- encoding: utf-8 -*-

from datetime import datetime

import requests
from mock import patch

from pygithub3.tests.utils.core import TestCase
from pygithub3.services.base import Service, MimeTypeMixin
from pygithub3.core.result import base
from pygithub3.tests.utils.base import DummyRequest, mock_response
from pygithub3.tests.utils.services import _, DummyService


@patch.object(requests.sessions.Session, 'request')
class TestServiceCalls(TestCase):

    def setUp(self):
        self.s = Service()
        self.r = DummyRequest()
        self.args = dict(arg1='arg1', arg2='arg2')

    def test_BOOL(self, request_method):
        self.s._bool(self.r, **self.args)
        request_method.assert_called_with('head', _('dummyrequest'),
                                          params=self.args)

    def test_PUT(self, request_method):
        self.s._put(self.r, **self.args)
        data = 'PLACEHOLDER'  # See _put
        request_method.assert_called_with('put', _('dummyrequest'),
                                          data=data, params=self.args)

    def test_DELETE(self, request_method):
        request_method.return_value = mock_response('delete')
        self.s._delete(self.r, **self.args)
        request_method.assert_called_with('delete', _('dummyrequest'),
                                          data=None, params=self.args)

    def test_POST(self, request_method):
        request_method.return_value = mock_response('post')
        self.s._post(self.r, **self.args)
        request_method.assert_called_with('post', _('dummyrequest'),
                                          data=None, params=self.args)

    def test_GET(self, request_method):
        request_method.return_value = mock_response()
        self.s._get(self.r, **self.args)
        request_method.assert_called_with('get', _('dummyrequest'),
                                          params=self.args)

    def test_GET_result(self, request_method):
        result = self.s._get_result(self.r, **self.args)
        self.assertFalse(request_method.called)
        self.assertIsInstance(result, base.Result)

    def test_normalize_ok(self, request_method):
        data = {'test': datetime(2012, 12, 12, 3, 3, 3)}
        self.s._normalize_date('test', data)
        self.assertEqual(data['test'], '2012-12-12T03:03:03Z')

    def test_normalize_fail(self, request_method):
        data = {'test': 'fail'}
        self.s._normalize_date('test', data)
        self.assertEqual(data['test'], 'fail')


@patch.object(requests.sessions.Session, 'request')
class TestMimeType(TestCase):

    def setUp(self):
        self.ms = DummyService()

    def test_WITHOUT_mimetype(self, request_method):
        request_method.return_value = mock_response()
        self.ms.dummy_request()
        request_method.assert_called_with('get', _('dummyrequest'), params={})

    def test_WITH_mimetype(self, request_method):
        request_method.return_value = mock_response()
        self.ms.set_html()
        self.ms.dummy_request()
        request_method.assert_called_with('get', _('dummyrequest'),
            headers={'Accept': 'application/vnd.github.%s.html+json' %
                                MimeTypeMixin.VERSION},
            params={})