def test_create_duplicated_name(self): """ Ensure that it is not allowed to create a Program with a duplicate name """ ProgramFactory(name="duplicated name") # saved directly to db data = self._build_post_data(name="duplicated name") response = self._make_request(method='post', data=data, admin=True) self.assertEqual(response.status_code, 400) self.assertIn("must be unique", response.data["name"][0])
def test_status_list_filter(self, query_status): """ Verify that list results can be filtered by a 'status' query string argument. """ # create one Program of each status for status in STATUSES: ProgramFactory(name="{} program".format(status), status=status) response = self._make_request(admin=True, data={'status': query_status}) self.assertEqual(response.status_code, 200) results = response.data['results'] self.assertEqual(len(results), 1) self.assertEqual(results[0]['status'], query_status)
def test_list_admin(self): """ Verify the list includes all Programs, except those with DELETED status, for ADMINS. """ # create one Program of each status for status in STATUSES: ProgramFactory(name="{} program".format(status), status=status) response = self._make_request(admin=True) self.assertEqual(response.status_code, 200) results = response.data['results'] self.assertEqual(len(results), 3) self.assertNotIn(ProgramStatus.DELETED, set(obj["status"] for obj in results))
def test_list_learner(self): """ Verify the list includes only UNPUBLISHED and RETIRED Programs, for LEARNERS. """ # create one Program of each status for status in STATUSES: ProgramFactory(name="{} program".format(status), status=status) response = self._make_request() self.assertEqual(response.status_code, 200) results = response.data['results'] self.assertEqual(len(results), 2) statuses = set(obj["status"] for obj in results) self.assertNotIn(ProgramStatus.DELETED, statuses) self.assertNotIn(ProgramStatus.UNPUBLISHED, statuses)