コード例 #1
0
ファイル: default.py プロジェクト: PyBossa/pybossa
 def setUp(self):
     self.flask_app = flask_app
     self.app = flask_app.test_client()
     with self.flask_app.app_context():
         rebuild_db()
         reset_all_pk_sequences()
         leaderboard()
コード例 #2
0
    def test_leaderboard_foo_dash_key_current_user_window(self):
        """Test JOB leaderboard returns users for foo-dash key with current user and
        window."""
        UserFactory.create_batch(10, info={'foo-dash': 0})
        UserFactory.create_batch(10, info={'foo-dash': 2})
        UserFactory.create_batch(10, info={'foo-dash': 2}, restrict=True)
        users = []
        for score in range(11, 22):
            users.append(UserFactory.create(info={'foo-dash': score}))
        myself = UserFactory.create(info={'foo-dash': 1})

        leaderboard(info='foo-dash')

        top_users = get_leaderboard(user_id=myself.id,
                                    info='foo-dash',
                                    window=5)

        assert len(top_users) == 20 + 5 + 1 + 5, len(top_users)
        assert top_users[25]['name'] == myself.name
        assert top_users[25]['score'] == myself.info.get('foo-dash')
        assert top_users[24]['score'] >= myself.info.get('foo-dash')
        assert top_users[26]['score'] <= myself.info.get('foo-dash')

        results = db.session.execute('select * from "users_rank_foo-dash"')
        for r in results:
            assert r.restrict is False, r
コード例 #3
0
ファイル: default.py プロジェクト: fiorda/pybossa-gigwork-2.5
 def setUp(self):
     self.flask_app = flask_app
     self.app = flask_app.test_client()
     with self.flask_app.app_context():
         rebuild_db()
         reset_all_pk_sequences()
         leaderboard()
コード例 #4
0
 def test_anon_week(self):
     """Test JOB leaderboard returns anon active week runs."""
     users = UserFactory.create_batch(20)
     for user in users:
         TaskRunFactory.create(user=user)
     leaderboard()
     top_users = get_leaderboard()
     assert len(top_users) == 20, len(top_users)
コード例 #5
0
 def test_anon_week(self):
     """Test JOB leaderboard returns anon active week runs."""
     users = UserFactory.create_batch(20)
     for user in users:
         TaskRunFactory.create(user=user)
     leaderboard()
     top_users = get_leaderboard()
     assert len(top_users) == 20, len(top_users)
コード例 #6
0
 def test_leaderboard_foo_key(self):
     """Test JOB leaderboard returns users for foo key."""
     users = []
     for score in range(1, 11):
         users.append(UserFactory.create(info=dict(foo=score)))
     leaderboard(info='foo')
     top_users = get_leaderboard(info='foo')
     assert len(top_users) == 10, len(top_users)
     score = 10
     for user in top_users:
         user['score'] == score, user
         score = score - 1
コード例 #7
0
 def test_leaderboard_foo_key(self):
     """Test JOB leaderboard returns users for foo key."""
     users = []
     for score in range(1, 11):
         users.append(UserFactory.create(info=dict(foo=score)))
     leaderboard(info='foo')
     top_users = get_leaderboard(info='foo')
     assert len(top_users) == 10, len(top_users)
     score = 10
     for user in top_users:
         user['score'] == score, user
         score = score - 1
コード例 #8
0
 def test_leaderboard_foo_key_current_user(self):
     """Test JOB leaderboard returns users for foo key with current user."""
     users = []
     for score in range(1, 11):
         users.append(UserFactory.create(info=dict(foo=score)))
     leaderboard(info='foo')
     top_users = get_leaderboard(user_id=users[0].id, info='foo')
     assert len(top_users) == 11, len(top_users)
     score = 10
     for user in top_users[0:10]:
         user['score'] == score, user
         score = score - 1
     assert top_users[-1]['name'] == users[0].name
     assert top_users[-1]['score'] == users[0].info.get('foo')
コード例 #9
0
 def test_leaderboard_foo_key_current_user(self):
     """Test JOB leaderboard returns users for foo key with current user."""
     users = []
     for score in range(1, 11):
         users.append(UserFactory.create(info=dict(foo=score)))
     leaderboard(info='foo')
     top_users = get_leaderboard(user_id=users[0].id, info='foo')
     assert len(top_users) == 11, len(top_users)
     score = 10
     for user in top_users[0:10]:
         user['score'] == score, user
         score = score - 1
     assert top_users[-1]['name'] == users[0].name
     assert top_users[-1]['score'] == users[0].info.get('foo')
コード例 #10
0
    def test_leaderboard_foo_key(self):
        """Test JOB leaderboard returns users for foo key."""
        users = []
        for score in range(1, 11):
            users.append(UserFactory.create(info=dict(foo=score)))
        users.append(UserFactory.create(restrict=True, info=dict(foo=11)))
        leaderboard(info='foo')
        top_users = get_leaderboard(info='foo')
        assert len(top_users) == 10, len(top_users)
        score = 10
        for user in top_users:
            user['score'] == score, user
            score = score - 1

        results = db.session.execute('select * from users_rank_foo')
        for r in results:
            assert r.restrict is False, r
コード例 #11
0
    def test_leaderboard_foo_dash_key(self):
        """Test JOB leaderboard returns users for foo-dash key."""
        users = []
        for score in range(1, 11):
            users.append(UserFactory.create(info={'foo-dash': score}))
        users.append(UserFactory.create(restrict=True, info={'foo-dash': 11}))
        leaderboard(info='foo-dash')
        top_users = get_leaderboard(info='foo-dash')
        assert len(top_users) == 10, len(top_users)
        score = 10
        for user in top_users:
            user['score'] == score, user
            score = score - 1

        results = db.session.execute('select * from "users_rank_foo-dash"');
        for r in results:
            assert r.restrict is False, r
コード例 #12
0
 def test_materialized_view_refreshed_concurrently(self, db_mock):
     """Test JOB leaderboard materialized view is refreshed."""
     result = MagicMock()
     result.exists = True
     results = [result]
     db_mock.slave_session.execute.return_value = results
     res = leaderboard()
     assert db_mock.session.execute.called
     assert res == 'Materialized view refreshed concurrently'
コード例 #13
0
 def test_materialized_view_refreshed_concurrently(self, db_mock):
     """Test JOB leaderboard materialized view is refreshed."""
     result = MagicMock()
     result.exists = True
     results = [result]
     db_mock.slave_session.execute.return_value = results
     res = leaderboard()
     assert db_mock.session.execute.called
     assert res == 'Materialized view refreshed concurrently'
コード例 #14
0
    def test_anon_week(self):
        """Test JOB leaderboard returns anon active week runs."""
        db.session.execute('''delete from "user";''')
        from pybossa.core import user_repo
        users = UserFactory.create_batch(20)
        restricted = UserFactory.create(restrict=True)
        users.append(restricted)
        for user in users:
            TaskRunFactory.create(user=user)
        leaderboard()
        top_users = get_leaderboard()
        assert len(top_users) == 20, len(top_users)
        for u in top_users:
            assert u['name'] != restricted.name, u

        results = db.session.execute('select * from users_rank');
        for r in results:
            assert r.restrict is False, r
コード例 #15
0
 def test_materialized_view_created(self, db_mock):
     """Test JOB leaderboard materialized view is created."""
     result = MagicMock()
     result.exists = False
     results = [result]
     db_mock.slave_session.execute.return_value = results
     res = leaderboard()
     assert db_mock.session.commit.called
     assert res == 'Materialized view created'
コード例 #16
0
    def test_anon_week(self):
        """Test JOB leaderboard returns anon active week runs."""
        db.session.execute('''delete from "user";''')
        from pybossa.core import user_repo
        users = UserFactory.create_batch(20)
        restricted = UserFactory.create(restrict=True)
        users.append(restricted)
        for user in users:
            TaskRunFactory.create(user=user)
        leaderboard()
        top_users = get_leaderboard()
        assert len(top_users) == 20, len(top_users)
        for u in top_users:
            assert u['name'] != restricted.name, u

        results = db.session.execute('select * from users_rank')
        for r in results:
            assert r.restrict is False, r
コード例 #17
0
 def test_materialized_view_created(self, db_mock):
     """Test JOB leaderboard materialized view is created."""
     result = MagicMock()
     result.exists = False
     results = [result]
     db_mock.slave_session.execute.return_value = results
     res = leaderboard()
     assert db_mock.session.commit.called
     assert res == 'Materialized view created'
コード例 #18
0
    def test_leaderboard_foo_key_current_user_window(self):
        """Test JOB leaderboard returns users for foo key with current user and
        window."""
        UserFactory.create_batch(10, info=dict(n=0))
        UserFactory.create_batch(10, info=dict(n=2))
        users = []
        for score in range(11, 22):
            users.append(UserFactory.create(info=dict(n=score)))
        myself = UserFactory.create(info=dict(n=1))

        leaderboard(info='n')

        top_users = get_leaderboard(user_id=myself.id, info='n', window=5)

        assert len(top_users) == 20 + 5 + 1 + 5, len(top_users)
        assert top_users[25]['name'] == myself.name
        assert top_users[25]['score'] == myself.info.get('n')
        assert top_users[24]['score'] >= myself.info.get('n')
        assert top_users[26]['score'] <= myself.info.get('n')
コード例 #19
0
    def test_leaderboard_foo_key_current_user_window(self):
        """Test JOB leaderboard returns users for foo key with current user and
        window."""
        UserFactory.create_batch(10, info=dict(n=0))
        UserFactory.create_batch(10, info=dict(n=2))
        users = []
        for score in range(11, 22):
            users.append(UserFactory.create(info=dict(n=score)))
        myself = UserFactory.create(info=dict(n=1))

        leaderboard(info='n')

        top_users = get_leaderboard(user_id=myself.id, info='n', window=5)

        assert len(top_users) == 20 + 5 + 1 + 5, len(top_users)
        assert top_users[25]['name'] == myself.name
        assert top_users[25]['score'] == myself.info.get('n')
        assert top_users[24]['score'] >= myself.info.get('n')
        assert top_users[26]['score'] <= myself.info.get('n')
コード例 #20
0
    def test_leaderboard_foo_key_current_user(self):
        """Test JOB leaderboard returns users for foo key with current user."""
        users = []
        for score in range(1, 11):
            users.append(UserFactory.create(info=dict(foo=score)))

        users.append(UserFactory.create(restrict=True, info=dict(foo=11)))

        leaderboard(info='foo')
        top_users = get_leaderboard(user_id=users[0].id, info='foo')
        assert len(top_users) == 11, len(top_users)
        score = 10
        for user in top_users[0:10]:
            user['score'] == score, user
            score = score - 1
        assert top_users[-1]['name'] == users[0].name
        assert top_users[-1]['score'] == users[0].info.get('foo')

        results = db.session.execute('select * from users_rank_foo')
        for r in results:
            assert r.restrict is False, r
コード例 #21
0
    def test_leaderboard_foo_dash_key_current_user(self):
        """Test JOB leaderboard returns users for foo-dash key with current user."""
        users = []
        for score in range(1, 11):
            users.append(UserFactory.create(info={'foo-dash': score}))

        users.append(UserFactory.create(restrict=True, info={'foo-dash': 11}))

        leaderboard(info='foo-dash')
        top_users = get_leaderboard(user_id=users[0].id, info='foo-dash')
        assert len(top_users) == 11, len(top_users)
        score = 10
        for user in top_users[0:10]:
            user['score'] == score, user
            score = score - 1
        assert top_users[-1]['name'] == users[0].name
        assert top_users[-1]['score'] == users[0].info.get('foo-dash')

        results = db.session.execute('select * from "users_rank_foo-dash"');
        for r in results:
            assert r.restrict is False, r
コード例 #22
0
 def test_materialized_view_refreshed(self, db_mock, exists_mock):
     """Test JOB leaderboard materialized view is refreshed."""
     result = MagicMock()
     result.exists = True
     results = [result]
     exists_mock.return_value = True
     db_mock.slave_session.execute.side_effect = results
     db_mock.session.execute.side_effect = [
         ProgrammingError('foo', 'bar', 'bar'), True
     ]
     res = leaderboard()
     assert db_mock.session.execute.called
     assert res == 'Materialized view refreshed'
コード例 #23
0
 def test_materialized_view_refreshed(self, db_mock, exists_mock):
     """Test JOB leaderboard materialized view is refreshed."""
     result = MagicMock()
     result.exists = True
     results = [result]
     exists_mock.return_value = True
     db_mock.slave_session.execute.side_effect = results
     db_mock.session.execute.side_effect = [ProgrammingError('foo',
                                                             'bar',
                                                             'bar'),
                                            True]
     res = leaderboard()
     assert db_mock.session.execute.called
     assert res == 'Materialized view refreshed'
コード例 #24
0
    def test_leaderboard_foo_dash_key_current_user_window(self):
        """Test JOB leaderboard returns users for foo-dash key with current user and
        window."""
        UserFactory.create_batch(10, info={'foo-dash': 0})
        UserFactory.create_batch(10, info={'foo-dash': 2})
        UserFactory.create_batch(10, info={'foo-dash': 2}, restrict=True)
        users = []
        for score in range(11, 22):
            users.append(UserFactory.create(info={'foo-dash': score}))
        myself = UserFactory.create(info={'foo-dash': 1})

        leaderboard(info='foo-dash')

        top_users = get_leaderboard(user_id=myself.id, info='foo-dash', window=5)

        assert len(top_users) == 20 + 5 + 1 + 5, len(top_users)
        assert top_users[25]['name'] == myself.name
        assert top_users[25]['score'] == myself.info.get('foo-dash')
        assert top_users[24]['score'] >= myself.info.get('foo-dash')
        assert top_users[26]['score'] <= myself.info.get('foo-dash')

        results = db.session.execute('select * from "users_rank_foo-dash"');
        for r in results:
            assert r.restrict is False, r