class TestTinyProjectList(ProjectEndpointTestCase): """ Test case for the ``TinyProjectList`` API view. """ def setUp(self): self.init_projects() campaign = ProjectPhase.objects.get(slug='campaign') incomplete = ProjectPhase.objects.get(slug='done-incomplete') complete = ProjectPhase.objects.get(slug='done-complete') self.project1 = ProjectFactory(status=complete) self.project1.created = '2017-03-18 00:00:00.000000+00:00' self.project1.save() self.project2 = ProjectFactory(status=campaign) self.project2.created = '2017-03-12 00:00:00.000000+00:00' self.project2.save() self.project3 = ProjectFactory(status=incomplete) self.project3.created = '2017-03-01 00:00:00.000000+00:00' self.project3.save() self.project4 = ProjectFactory(status=campaign) self.project4.created = '2017-03-20 00:00:00.000000+00:00' self.project4.save() def test_tiny_project_list(self): response = self.client.get(reverse('project_tiny_preview_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) data = json.loads(response.content) self.assertEqual(int(data['results'][0]['id']), self.project3.id) self.assertEqual(int(data['results'][1]['id']), self.project2.id) self.assertEqual(int(data['results'][2]['id']), self.project1.id) self.assertEqual(int(data['results'][3]['id']), self.project4.id)
class TestProjectStatusUpdate(BluebottleTestCase): """ save() automatically updates some fields, specifically the status field. Make sure it picks the right one """ def setUp(self): super(TestProjectStatusUpdate, self).setUp() self.init_projects() self.theme = ProjectThemeFactory(slug='test-theme') self.project = ProjectFactory(theme=self.theme) self.task = TaskFactory(project=self.project) self.survey = SurveyFactory(link='https://example.com/survey/1/') def test_survey_url(self): url = urlparse( Survey.url(self.task) ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertEqual(query['task_id'], [str(self.task.id)]) self.assertEqual(query['user_type'], ['task_member']) def test_survey_url_no_survey(self): self.survey.delete() self.assertIsNone(Survey.url(self.task)) def test_survey_url_project(self): url = urlparse( Survey.url(self.project) ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertTrue('task_id' not in query) def test_survey_url_user_type(self): url = urlparse( Survey.url(self.task, user_type='initiator'), ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertEqual(query['task_id'], [str(self.task.id)]) self.assertEqual(query['user_type'], ['initiator']) def test_survey_url_no_celebration(self): self.project.celebrate_results = False self.project.save() self.assertIsNone(Survey.url(self.project))
class TestProjectStatusUpdate(BluebottleTestCase): """ save() automatically updates some fields, specifically the status field. Make sure it picks the right one """ def setUp(self): super(TestProjectStatusUpdate, self).setUp() self.init_projects() self.theme = ProjectThemeFactory(slug='test-theme') self.project = ProjectFactory(theme=self.theme) self.task = TaskFactory(project=self.project) self.survey = SurveyFactory(link='https://example.com/survey/1/', active=True) def test_survey_url(self): url = urlparse( Survey.url(self.task) ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertEqual(query['task_id'], [str(self.task.id)]) self.assertEqual(query['user_type'], ['task_member']) def test_survey_url_no_survey(self): self.survey.delete() self.assertIsNone(Survey.url(self.task)) def test_survey_url_project(self): url = urlparse( Survey.url(self.project) ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertTrue('task_id' not in query) def test_survey_url_user_type(self): url = urlparse( Survey.url(self.task, user_type='initiator'), ) query = parse_qs(url.query) self.assertEqual(url.netloc, 'example.com') self.assertEqual(query['theme'], [self.theme.slug]) self.assertEqual(query['project_id'], [str(self.project.id)]) self.assertEqual(query['task_id'], [str(self.task.id)]) self.assertEqual(query['user_type'], ['initiator']) def test_survey_url_no_celebration(self): self.project.celebrate_results = False self.project.save() self.assertIsNone(Survey.url(self.project))