diff options
Diffstat (limited to 'github3/tests')
-rw-r--r-- | github3/tests/fixtures.py | 40 | ||||
-rw-r--r-- | github3/tests/get_handlers_test.py | 11 | ||||
-rw-r--r-- | github3/tests/handler_test.py | 53 | ||||
-rw-r--r-- | github3/tests/user_handler_test.py | 58 |
4 files changed, 157 insertions, 5 deletions
diff --git a/github3/tests/fixtures.py b/github3/tests/fixtures.py new file mode 100644 index 0000000..aef4425 --- /dev/null +++ b/github3/tests/fixtures.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +GET_USER = { + "login": "octocat", + "id": 1, + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "url": "https://api.github.com/users/octocat", + "name": "monalisa octocat", + "company": "GitHub", + "blog": "https://github.com/blog", + "location": "San Francisco", + "email": "octocat@github.com", + "hireable": False, + "bio": "There once was...", + "public_repos": 2, + "public_gists": 1, + "followers": 20, + "following": 0, + "html_url": "https://github.com/octocat", + "created_at": "2008-01-14T04:33:35Z", + "type": "User" +} + +GET_LINK = '<https://api.github.com/gists/public?page=2>; rel="next", <https://api.github.com/gists/public?page=5>; rel="last"' + +GET_FOLLOWERS = [ + { + "login": "octocat", + "id": 1, + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "url": "https://api.github.com/users/octocat" + }, + { + "login": "octocat", + "id": 1, + "avatar_url": "https://github.com/images/error/octocat_happy.gif", + "url": "https://api.github.com/users/octocat" + }, +] diff --git a/github3/tests/get_handlers_test.py b/github3/tests/get_handlers_test.py index 0ae1302..f07a7cf 100644 --- a/github3/tests/get_handlers_test.py +++ b/github3/tests/get_handlers_test.py @@ -16,13 +16,14 @@ class TestGetHandlers(TestCase): anom_user = self.anom_gh.users auth_user = self.auth_gh.users - self.assertEquals(isinstance(anom_user, handlers.users.User), True) - self.assertEquals(isinstance(auth_user, handlers.users.AuthUser), True) + self.assertIsInstance(anom_user, handlers.users.User) + self.assertEquals(anom_user.prefix, 'users') + self.assertIsInstance(auth_user, handlers.users.AuthUser) + self.assertEquals(auth_user.prefix, 'user') def test_get_gists(self): anom_gists = self.anom_gh.gists auth_gists = self.auth_gh.gists - self.assertEquals(isinstance(anom_gists, handlers.gists.Gist), True) - self.assertEquals( - isinstance(auth_gists, handlers.gists.AuthGist), True) + self.assertIsInstance(anom_gists, handlers.gists.Gist) + self.assertIsInstance(auth_gists, handlers.gists.AuthGist) diff --git a/github3/tests/handler_test.py b/github3/tests/handler_test.py new file mode 100644 index 0000000..51cd111 --- /dev/null +++ b/github3/tests/handler_test.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from mock import Mock, patch +from unittest import TestCase +from github3 import api +from github3.handlers.base import Handler +from github3.exceptions import * +from github3.converters import * +import json +import requests + + +class TestHandler(TestCase): + + def setUp(self): + self.gh = api.Github() + self.handler = Handler(self.gh) + + def test_get_converter(self): + self.assertIsInstance(self.handler._get_converter(), Modelizer) + self.assertIsInstance(self.handler._get_converter(converter=Rawlizer), + Rawlizer) + self.handler.converter = Modelizer + self.assertIsInstance(self.handler._get_converter(), Modelizer) + + def test_bool(self): + with patch.object(api.Github, 'head') as head: + response = head.return_value + response.status_code = 204 + bool1 = self.handler._bool('test') + head.side_effect = NotFound() + bool2 = self.handler._bool('test') + head.assert_called_with('test') + self.assertTrue(bool1) + self.assertFalse(bool2) + + with patch.object(api.Github, 'put') as put: + response = put.return_value + response.status_code = 204 + booll = self.handler._put('test') + put.assert_called_with('test', method='put') + self.assertTrue(booll) + + with patch.object(api.Github, 'delete') as delete: + response = delete.return_value + response.content = self.gh._parser.dumps({'data': 'test'}) + response.status_code = 204 + bool1 = self.handler._bool('test', method='delete') + bool2 = self.handler._bool('test', method='delete', + data={'some': 'data'}) + self.assertTrue(bool1) + self.assertTrue(bool2) diff --git a/github3/tests/user_handler_test.py b/github3/tests/user_handler_test.py new file mode 100644 index 0000000..9eb3708 --- /dev/null +++ b/github3/tests/user_handler_test.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from unittest import TestCase +from mock import Mock, patch +from github3 import api +from fixtures import * +from github3.models.user import User, AuthUser +from github3.exceptions import * + + +class TestUserHandler(TestCase): + """ Test public api about users """ + + def setUp(self): + self.gh = api.Github() + self.handler = self.gh.users + + def test_set_username(self): + handler = self.handler.set_username('test') + self.assertEquals(id(handler), id(self.handler)) + self.assertEquals(handler.username, 'test') + model_user = Mock() + model_user.login = 'test' + handler = self.handler.set_username(model_user) + self.assertEquals(handler.username, 'test') + + def test_parse_user(self): + model_user = Mock() + model_user.login = 'test' + self.assertRaises(UserIsAnonymous, self.handler._parse_user, None) + user = self.handler._parse_user(model_user) + self.assertEquals(user, 'test') + user = self.handler._parse_user('test') + self.assertEquals(user, 'test') + self.assertRaises(UserIsAnonymous, self.handler._parse_user, Mock()) + self.handler.set_username('octocat') + self.assertEquals('octocat', self.handler._parse_user(None)) + self.assertEquals('octocat', self.handler._parse_user(Mock())) + self.assertEquals('test', self.handler._parse_user('test')) + self.assertEquals('test', self.handler._parse_user(model_user)) + + @patch.object(api.Github, 'get') + def test_get(self, get): + get.return_value = GET_USER + self.assertRaises(UserIsAnonymous, self.handler.get) + user = self.handler.get('octocat') + self.assertIsInstance(user, User) + get.assert_called_with('users/octocat') + + @patch.object(api.Github, '_request') + def test_get_followers(self, request): + response = request.return_value + response.headers = {'link': GET_LINK} # 5 pages + response.content = self.gh._parser.dumps(GET_FOLLOWERS) + followers = list(self.handler.get_followers('test')) + self.assertIsInstance(followers[0], User) + pass |