예제 #1
0
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)
예제 #2
0
 def test_send_on_delete(self):
     reuse = ReuseFactory()
     with assert_emit(Reuse.on_delete):
         reuse.deleted = datetime.now()
         reuse.save()
예제 #3
0
 def test_send_on_delete(self):
     reuse = ReuseFactory()
     with assert_emit(Reuse.on_delete):
         reuse.deleted = datetime.now()
         reuse.save()