|
| 1 | +#!/usr/bin/env python |
| 2 | +# -*- encoding: utf-8 -*- |
| 3 | + |
| 4 | +from unittest import TestCase |
| 5 | +from mock import Mock, patch |
| 6 | +from github3 import api |
| 7 | +from fixtures import * |
| 8 | +from github3.models.user import User, AuthUser |
| 9 | +from github3.exceptions import * |
| 10 | + |
| 11 | + |
| 12 | +class TestUserHandler(TestCase): |
| 13 | + """ Test public api about users """ |
| 14 | + |
| 15 | + def setUp(self): |
| 16 | + self.gh = api.Github() |
| 17 | + self.handler = self.gh.users |
| 18 | + |
| 19 | + def test_set_username(self): |
| 20 | + handler = self.handler.set_username('test') |
| 21 | + self.assertEquals(id(handler), id(self.handler)) |
| 22 | + self.assertEquals(handler.username, 'test') |
| 23 | + model_user = Mock() |
| 24 | + model_user.login = 'test' |
| 25 | + handler = self.handler.set_username(model_user) |
| 26 | + self.assertEquals(handler.username, 'test') |
| 27 | + |
| 28 | + def test_parse_user(self): |
| 29 | + model_user = Mock() |
| 30 | + model_user.login = 'test' |
| 31 | + self.assertRaises(UserIsAnonymous, self.handler._parse_user, None) |
| 32 | + user = self.handler._parse_user(model_user) |
| 33 | + self.assertEquals(user, 'test') |
| 34 | + user = self.handler._parse_user('test') |
| 35 | + self.assertEquals(user, 'test') |
| 36 | + self.assertRaises(UserIsAnonymous, self.handler._parse_user, Mock()) |
| 37 | + self.handler.set_username('octocat') |
| 38 | + self.assertEquals('octocat', self.handler._parse_user(None)) |
| 39 | + self.assertEquals('octocat', self.handler._parse_user(Mock())) |
| 40 | + self.assertEquals('test', self.handler._parse_user('test')) |
| 41 | + self.assertEquals('test', self.handler._parse_user(model_user)) |
| 42 | + |
| 43 | + @patch.object(api.Github, 'get') |
| 44 | + def test_get(self, get): |
| 45 | + get.return_value = GET_USER |
| 46 | + self.assertRaises(UserIsAnonymous, self.handler.get) |
| 47 | + user = self.handler.get('octocat') |
| 48 | + self.assertIsInstance(user, User) |
| 49 | + get.assert_called_with('users/octocat') |
| 50 | + |
| 51 | + @patch.object(api.Github, '_request') |
| 52 | + def test_get_followers(self, request): |
| 53 | + response = request.return_value |
| 54 | + response.headers = {'link': GET_LINK} # 5 pages |
| 55 | + response.content = self.gh._parser.dumps(GET_FOLLOWERS) |
| 56 | + followers = list(self.handler.get_followers('test')) |
| 57 | + self.assertIsInstance(followers[0], User) |
| 58 | + pass |
0 commit comments