Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 02ca85ba160d13ef81881abc74cbfbd3b1adb943
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Wed Oct 22 17:34:37 2014 +0200
[frontent] [WIP]fixing unittest, better isolation during test run
---------------------------------------------------------------
frontend/coprs_frontend/config/copr_unit_test.conf | 18 ++++++--
.../coprs/views/coprs_ns/coprs_general.py | 9 ++--
frontend/coprs_frontend/tests/coprs_test_case.py | 25 ++++++++++--
.../test_views/test_coprs_ns/test_coprs_general.py | 42 ++++++++++++++++++++
test_suite.sh | 2 +-
5 files changed, 82 insertions(+), 14 deletions(-)
diff --git a/frontend/coprs_frontend/config/copr_unit_test.conf
b/frontend/coprs_frontend/config/copr_unit_test.conf
index 2f29680..ab6e1ab 100644
--- a/frontend/coprs_frontend/config/copr_unit_test.conf
+++ b/frontend/coprs_frontend/config/copr_unit_test.conf
@@ -2,11 +2,19 @@
DATA_DIR = '/tmp'
import time
-#DATABASE = '/tmp/copr.db' # when executing >1 test instances use different
db
-DATABASE = '/tmp/copr_{}.db'.format(time.time())
+import os
-OPENID_STORE = '/tmp/openid_store'
-WHOOSHEE_DIR = '/tmp/whooshee'
+PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..',
'..', '..'))
+LOCAL_TMP_DIR = os.path.join(PROJECT_ROOT, '_tmp', str(int(time.time())) )
+
+print(LOCAL_TMP_DIR)
+
+#DATABASE = './tmp/copr.db' # when executing >1 test instances use different
db
+DATABASE = os.path.join(LOCAL_TMP_DIR, 'copr.db')
+
+
+OPENID_STORE = os.path.join(LOCAL_TMP_DIR, 'openid_store')
+WHOOSHEE_DIR = os.path.join(LOCAL_TMP_DIR, 'whooshee')
# salt for CSRF codes
#SECRET_KEY = 'put_some_secret_here'
@@ -30,7 +38,7 @@ SQLALCHEMY_DATABASE_URI = 'sqlite:///' + DATABASE
#LOGGING_LEVEL = logging.ERROR
#DEBUG = False
-#SQLALCHEMY_ECHO = False
+SQLALCHEMY_ECHO = False
CSRF_ENABLED = False
# as of Flask-WTF 0.9+
diff --git a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 1789453..dc14a90 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -2,6 +2,7 @@ import time
import re
import flask
+from flask import render_template
import platform
import smtplib
import sqlalchemy
@@ -105,10 +106,10 @@ def coprs_fulltext_search(page=1):
paginator = helpers.Paginator(query, query.count(), page)
coprs = paginator.sliced_query
- return flask.render_template("coprs/show.html",
- coprs=coprs,
- paginator=paginator,
- fulltext=fulltext)
+ return render_template("coprs/show.html",
+ coprs=coprs,
+ paginator=paginator,
+ fulltext=fulltext)
@coprs_ns.route("/<username>/add/")
diff --git a/frontend/coprs_frontend/tests/coprs_test_case.py
b/frontend/coprs_frontend/tests/coprs_test_case.py
index 15fb0b2..73daaf1 100644
--- a/frontend/coprs_frontend/tests/coprs_test_case.py
+++ b/frontend/coprs_frontend/tests/coprs_test_case.py
@@ -2,10 +2,12 @@ import base64
from collections import defaultdict
import os
import time
+import glob
from functools import wraps
import pytest
import decorator
+import shutil
import coprs
@@ -15,6 +17,21 @@ from coprs import models
class CoprsTestCase(object):
+ @classmethod
+ def setup_class(cls):
+ config = coprs.app.config
+ if "LOCAL_TMP_DIR" in config:
+ path = os.path.abspath(config["LOCAL_TMP_DIR"])
+ if not os.path.exists(path):
+ os.makedirs(path)
+
+ @classmethod
+ def teardown_class(cls):
+ config = coprs.app.config
+ # TODO: some tests fails with this cleanup - investigate and fix
+ #if "LOCAL_TMP_DIR" in config:
+ # shutil.rmtree(os.path.abspath(config["LOCAL_TMP_DIR"]))
+
def setup_method(self, method):
self.tc = coprs.app.test_client()
self.app = coprs.app
@@ -25,10 +42,10 @@ class CoprsTestCase(object):
self.helpers = helpers
self.backend_passwd = coprs.app.config["BACKEND_PASSWORD"]
# create datadir if it doesn't exist
- datadir = os.path.commonprefix(
- [self.app.config["DATABASE"],
self.app.config["OPENID_STORE"]])
- if not os.path.exists(datadir):
- os.makedirs(datadir)
+ #datadir = os.path.commonprefix(
+ # [self.app.config["DATABASE"],
self.app.config["OPENID_STORE"]])
+ #if not os.path.exists(datadir):
+ # os.makedirs(datadir)
coprs.db.create_all()
self.db.session.commit()
diff --git a/frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
b/frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
index 07808ed..94bc869 100644
--- a/frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
+++ b/frontend/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
@@ -1,7 +1,11 @@
+import flask
import pytest
from flexmock import flexmock
+import mock
+import time
+from coprs import models
from coprs.signals import copr_created
from tests.coprs_test_case import CoprsTestCase, TransactionDecorator
@@ -632,3 +636,41 @@ class TestCoprRepoGeneration(CoprsTestCase):
app.config["ENFORCE_PROTOCOL_FOR_BACKEND_URL"] = orig
raise e
app.config["ENFORCE_PROTOCOL_FOR_BACKEND_URL"] = orig
+
+
+class TestSearch(CoprsTestCase):
+
+ @mock.patch("coprs.views.coprs_ns.coprs_general.render_template")
+ def test_search_basic(self, mc_render_template, f_users, f_db):
+ #mc_flask.render_template.return_value = mock.MagicMock()
+ #self.prefix = u"prefix_{}_".format(int(time.time()))
+ self.prefix = u"prefix"
+
+ self.s_coprs = []
+
+ for x in range(5):
+ self.s_coprs.append(models.Copr(name=self.prefix + str(x), owner=self.u1))
+
+ for x in range(7):
+ self.s_coprs.append(models.Copr(name=self.prefix + str(x), owner=self.u2))
+
+ self.db.session.add_all(self.s_coprs)
+ self.db.session.commit()
+
+ mc_render_template.side_effect = lambda *args, **kwargs:
flask.render_template(*args, **kwargs)
+
+ self.tc.get("/coprs/fulltext/?fulltext={}".format(self.prefix))
+ qargs, qkwargs = mc_render_template.call_args
+ assert qkwargs["paginator"].total_count == 5+7
+
+
self.tc.get("/coprs/fulltext/?fulltext={}".format("user1/prefix"))
+ qargs, qkwargs = mc_render_template.call_args
+ assert qkwargs["paginator"].total_count == 5
+
+ self.tc.get("/coprs/fulltext/?fulltext={}".format("user1"))
+ qargs, qkwargs = mc_render_template.call_args
+ assert qkwargs["paginator"].total_count == 5
+
+ self.tc.get("/coprs/fulltext/?fulltext={}".format("user1/"))
+ qargs, qkwargs = mc_render_template.call_args
+ assert qkwargs["paginator"].total_count == 5
diff --git a/test_suite.sh b/test_suite.sh
index 5161232..d98e3b4 100644
--- a/test_suite.sh
+++ b/test_suite.sh
@@ -39,5 +39,5 @@ PYTHONPATH=keygen/src:$PYTHONPATH python -B -m pytest keygen/tests
--junitxml=_
mv {,_report/keygen.}coverage.xml
deactivate
-
+rm -rf _tmp/*