Blame tests/test_pagure_lib_star_project.py

Vivek Anand 327a4f
# coding=utf-8
Vivek Anand 327a4f
"""
Vivek Anand 327a4f
 (c) 2015-2017 - Copyright Red Hat Inc
Vivek Anand 327a4f
Vivek Anand 327a4f
 Authors:
Vivek Anand 327a4f
   Pierre-Yves Chibon <pingou@pingoured.fr></pingou@pingoured.fr>
Vivek Anand 327a4f
   Vivek Anand <vivekanand1101@gmail.com></vivekanand1101@gmail.com>
Vivek Anand 327a4f
Vivek Anand 327a4f
"""
Vivek Anand 327a4f
Pierre-Yves Chibon 67d1cc
from __future__ import unicode_literals, absolute_import
Aurélien Bompard dcf6f6
Vivek Anand 327a4f
import unittest
Vivek Anand 327a4f
import sys
Vivek Anand 327a4f
import os
Vivek Anand 327a4f
Pierre-Yves Chibon 73d120
sys.path.insert(
Pierre-Yves Chibon 73d120
    0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
Pierre-Yves Chibon 73d120
)
Vivek Anand 327a4f
Pierre-Yves Chibon 930073
import pagure.lib.model
Pierre-Yves Chibon 930073
import pagure.lib.query
Vivek Anand 327a4f
import tests
Vivek Anand 327a4f
Vivek Anand e28e4b
Vivek Anand 327a4f
class TestStarProjectLib(tests.SimplePagureTest):
Pierre-Yves Chibon 73d120
    """ Test the star project feature of pagure """
Vivek Anand 327a4f
Vivek Anand 327a4f
    def setUp(self):
Vivek Anand 327a4f
        """ Set up the environnment for running each star project lib tests """
Vivek Anand 327a4f
        super(TestStarProjectLib, self).setUp()
Vivek Anand 327a4f
        tests.create_projects(self.session)
Vivek Anand 327a4f
Vivek Anand 327a4f
    def test_update_star_project(self):
Pierre-Yves Chibon 73d120
        """ Test the update_star_project endpoint of pagure.lib """
Vivek Anand 327a4f
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Vivek Anand 327a4f
        # test with invalud Star object, should return None
Pierre-Yves Chibon 930073
        msg = pagure.lib.query.update_star_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, None, "pingou"
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.session.commit()
Vivek Anand 327a4f
        self.assertEqual(msg, None)
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # test starring the project
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query.update_star_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, "1", "pingou"
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You starred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 1)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # test unstarring the project
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query.update_star_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, "0", "pingou"
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You unstarred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
    def test_star_project(self):
Pierre-Yves Chibon 73d120
        """ Test the _star_project endpoint of pagure.lib """
Vivek Anand 327a4f
Vivek Anand 327a4f
        # test with not all arguments present
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._star_project(self.session, repo_obj, None)
Vivek Anand 327a4f
        self.session.commit()
Vivek Anand 327a4f
        self.assertEqual(msg, None)
Vivek Anand 327a4f
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._star_project(self.session, repo_obj, user_obj)
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You starred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 1)
Vivek Anand 327a4f
Vivek Anand 327a4f
    def test_unstar_project(self):
Pierre-Yves Chibon 73d120
        """ Test the _unstar_project endpoint of pagure.lib """
Vivek Anand 327a4f
Vivek Anand 327a4f
        # test with not all arguments present
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._unstar_project(self.session, repo_obj, None)
Vivek Anand 327a4f
        self.session.commit()
Vivek Anand 327a4f
        self.assertEqual(msg, None)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # the user hasn't starred the project before
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query._unstar_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You never starred the project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # star it for testing
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._star_project(self.session, repo_obj, user_obj)
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You starred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 1)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # the user starred and wishes to unstar
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query._unstar_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You unstarred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
    def test_get_stargazer_obj(self):
Pierre-Yves Chibon 73d120
        """ Test the _get_stargazer_obj test of pagure.lib """
Vivek Anand 327a4f
Vivek Anand 327a4f
        # star the project first
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._star_project(self.session, repo_obj, user_obj)
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You starred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 1)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # get the object now
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 930073
        star_obj = pagure.lib.query._get_stargazer_obj(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.assertEqual(isinstance(star_obj, pagure.lib.model.Star), True)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # unstar it and then try to get the object
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query._unstar_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You unstarred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # we don't store if the user has unstarred, we delete the obj
Vivek Anand 327a4f
        # so, we should get anything back in the query
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 930073
        star_obj = pagure.lib.query._get_stargazer_obj(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.assertEqual(star_obj is None, True)
Vivek Anand 327a4f
Vivek Anand 327a4f
    def test_has_starred(self):
Pierre-Yves Chibon 73d120
        """ Test the has_starred endpoint of pagure.lib """
Vivek Anand 327a4f
Vivek Anand 327a4f
        # star the project
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 73d120
        msg = pagure.lib.query._star_project(self.session, repo_obj, user_obj)
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You starred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 1)
Vivek Anand 327a4f
Pierre-Yves Chibon 930073
        has_starred = pagure.lib.query.has_starred(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, "pingou"
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.assertEqual(has_starred is True, True)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # unstar it and then test for has_starred
Pierre-Yves Chibon 73d120
        repo_obj = pagure.lib.query._get_project(self.session, "test")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Pierre-Yves Chibon 930073
        msg = pagure.lib.query._unstar_project(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, user_obj
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.session.commit()
Pierre-Yves Chibon 73d120
        self.assertEqual(msg, "You unstarred this project")
Pierre-Yves Chibon 73d120
        user_obj = pagure.lib.query.get_user(self.session, "pingou")
Vivek Anand e28e4b
        self.assertEqual(len(user_obj.stars), 0)
Vivek Anand 327a4f
Vivek Anand 327a4f
        # check now, it should return False
Pierre-Yves Chibon 930073
        has_starred = pagure.lib.query.has_starred(
Pierre-Yves Chibon 73d120
            self.session, repo_obj, "pingou"
Vivek Anand 327a4f
        )
Vivek Anand 327a4f
        self.assertEqual(has_starred is False, True)
Vivek Anand 327a4f
Vivek Anand 327a4f
Pierre-Yves Chibon 73d120
if __name__ == "__main__":
Vivek Anand 327a4f
    unittest.main(verbosity=2)