class ReuseBadgeAPITest(APITestCase): @classmethod def setUpClass(cls): # Register at least two badges Reuse.__badges__['test-1'] = 'Test 1' Reuse.__badges__['test-2'] = 'Test 2' cls.factory = badge_factory(Reuse) def setUp(self): self.login(AdminFactory()) self.reuse = ReuseFactory() def test_list(self): response = self.get(url_for('api.available_reuse_badges')) self.assertStatus(response, 200) self.assertEqual(len(response.json), len(Reuse.__badges__)) for kind, label in Reuse.__badges__.items(): self.assertIn(kind, response.json) self.assertEqual(response.json[kind], label) def test_create(self): data = self.factory.as_dict() with self.api_user(): response = self.post( url_for('api.reuse_badges', reuse=self.reuse), data) self.assert201(response) self.reuse.reload() self.assertEqual(len(self.reuse.badges), 1) def test_create_same(self): data = self.factory.as_dict() with self.api_user(): self.post( url_for('api.reuse_badges', reuse=self.reuse), data) response = self.post( url_for('api.reuse_badges', reuse=self.reuse), data) self.assertStatus(response, 200) self.reuse.reload() self.assertEqual(len(self.reuse.badges), 1) def test_create_2nd(self): # Explicitely setting the kind to avoid collisions given the # small number of choices for kinds. kinds_keys = Reuse.__badges__.keys() self.reuse.badges.append( self.factory(kind=kinds_keys[0])) self.reuse.save() data = self.factory.as_dict() data['kind'] = kinds_keys[1] with self.api_user(): response = self.post( url_for('api.reuse_badges', reuse=self.reuse), data) self.assert201(response) self.reuse.reload() self.assertEqual(len(self.reuse.badges), 2) def test_delete(self): badge = self.factory() self.reuse.badges.append(badge) self.reuse.save() with self.api_user(): response = self.delete( url_for('api.reuse_badge', reuse=self.reuse, badge_kind=str(badge.kind))) self.assertStatus(response, 204) self.reuse.reload() self.assertEqual(len(self.reuse.badges), 0) def test_delete_404(self): with self.api_user(): response = self.delete( url_for('api.reuse_badge', reuse=self.reuse, badge_kind=str(self.factory().kind))) self.assert404(response)
def test_send_on_delete(self): reuse = ReuseFactory() with assert_emit(Reuse.on_delete): reuse.deleted = datetime.now() reuse.save()
def test_send_on_delete(self): reuse = ReuseFactory() with assert_emit(Reuse.on_delete): reuse.deleted = datetime.now() reuse.save()