SHARE
TWEET
Untitled
a guest
May 31st, 2015
272
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- # VIEW
- import json
- from django.shortcuts import get_object_or_404
- from django.http import HttpResponse
- from repos.models import Repo
- from repos import tasks
- def github_webhook(request):
- event_type = request.META['X-GITHUB-EVENT']
- payload = json.loads(request.body)
- pr_number = payload['number']
- name = payload['pull_request']['base']['repo']['full_name']
- gh_repo = get_object_or_404(Repo, name=name, enabled=True, deleted=False)
- print 'in the view: %s' % tasks.lintRepo.delay
- tasks.lintRepo.delay(name, pr_number, gh_repo.linters)
- return HttpResponse(status=201)
- # TESTS
- import os.path
- from django.test import TestCase, Client
- from django.core.urlresolvers import reverse
- from mock import patch
- from repos.factories import RepoFactory
- class GitHubWebhookTests(TestCase):
- @classmethod
- def setUpClass(cls):
- super(GitHubWebhookTests, cls).setUpClass()
- with open(os.path.join(os.path.dirname(__file__), 'fixtures/github_pr.json')) as f:
- cls.github_pr_json = f.read()
- def test_sends_relevant_info_to_task(self):
- print ""
- RepoFactory.create(name='baxterthehacker/public-repo')
- c = Client()
- with patch('repos.tasks') as mock_tasks:
- print 'sends relevent before post: %s' % mock_tasks.lintRepo.delay
- c.post(
- reverse('github_webhook'),
- content_type='application/json',
- data=self.github_pr_json, **{
- 'X-GITHUB-EVENT': 'pull_request'
- }
- )
- print 'sends relevent after post: %s' % mock_tasks.lintRepo.delay
- self.assertTrue(mock_tasks.lintRepo.delay.called)
- mock_tasks.lintRepo.delay.assert_called_with(
- 'baxterthehacker/public-repo', 1, '[]')
- def test_404s_if_repo_doesnt_exist(self):
- print ""
- c = Client()
- with patch('repos.tasks') as mock_tasks:
- print '404 before post: %s' % mock_tasks.lintRepo.delay.id
- resp = c.post(
- reverse('github_webhook'),
- content_type='application/json',
- data=self.github_pr_json, **{
- 'X-GITHUB-EVENT': 'pull_request'
- }
- )
- print '404 after post: %s' % mock_tasks.lintRepo.delay.id
- self.assertEqual(resp.status_code, 404)
- # ERRORS
- -*- mode: compilation; default-directory: "~/src/justin.abrah.ms/betterdiff-django/" -*-
- Compilation started at Sun May 31 00:03:43
- make test
- cd betterdiff && ./manage.py test --pattern="*_test.py" --verbosity=1
- Creating test database for alias 'default'...
- .
- 404 before post: <MagicMock name='tasks.lintRepo.delay' id='139714623964624'>
- 404 after post: <MagicMock name='tasks.lintRepo.delay' id='139714623964624'>
- .
- sends relevent before post: <MagicMock name='tasks.lintRepo.delay' id='139714623744272'>
- in the view: <MagicMock name='tasks.lintRepo.delay' id='139714623964624'>
- sends relevent after post: <MagicMock name='tasks.lintRepo.delay' id='139714623744272'>
- F
- ======================================================================
- FAIL: test_sends_relevant_info_to_task (repos.views_test.GitHubWebhookTests)
- ----------------------------------------------------------------------
- Traceback (most recent call last):
- File "/home/jabrahms/src/justin.abrah.ms/betterdiff-django/betterdiff/repos/views_test.py", line 33, in test_sends_relevant_info_to_task
- self.assertTrue(mock_tasks.lintRepo.delay.called)
- AssertionError: False is not true
- ----------------------------------------------------------------------
- Ran 3 tests in 0.017s
- FAILED (failures=1)
- Destroying test database for alias 'default'...
- Makefile:2: recipe for target 'test' failed
- make: *** [test] Error 1
- Compilation exited abnormally with code 2 at Sun May 31 00:03:43
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
