Improvements and fixes on tests.

remotes/origin/enhancement/email-actions
Andrey Antukh 2014-09-03 19:27:43 +02:00
parent 01d524adb8
commit 3061425a67
13 changed files with 71 additions and 72 deletions

View File

@ -18,9 +18,9 @@ from .development import *
SKIP_SOUTH_TESTS = True
SOUTH_TESTS_MIGRATE = False
CELERY_ALWAYS_EAGER = True
MEDIA_ROOT = "/tmp"
EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend"
INSTALLED_APPS = INSTALLED_APPS + ["tests"]

View File

@ -15,11 +15,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.testing")
import pytest
import django
django.setup()
from .fixtures import *
@ -30,3 +30,8 @@ def pytest_addoption(parser):
def pytest_runtest_setup(item):
if "slow" in item.keywords and not item.config.getoption("--runslow"):
pytest.skip("need --runslow option to run")
def pytest_configure(config):
django.setup()

View File

@ -363,8 +363,8 @@ class ContentTypeFactory(Factory):
strategy = factory.CREATE_STRATEGY
django_get_or_create = ("app_label", "model")
app_label = factory.LazyAttribute(lambda obj: ContentTypeFactory.FACTORY_FOR._meta.app_label)
model = factory.LazyAttribute(lambda obj: ContentTypeFactory.FACTORY_FOR._meta.model_name)
app_label = factory.LazyAttribute(lambda obj: "issues")
model = factory.LazyAttribute(lambda obj: "Issue")
class AttachmentFactory(Factory):

View File

@ -190,7 +190,8 @@ def test_milestone_create(client, data):
"estimated_finish": "2014-12-24",
"project": data.public_project.pk,
})
results = helper_test_http_method(client, 'post', url, create_data, users, lambda: Milestone.objects.all().delete())
results = helper_test_http_method(client, 'post', url, create_data, users,
lambda: Milestone.objects.all().delete())
assert results == [401, 403, 403, 201, 201]
create_data = json.dumps({
@ -199,7 +200,9 @@ def test_milestone_create(client, data):
"estimated_finish": "2014-12-24",
"project": data.private_project1.pk,
})
results = helper_test_http_method(client, 'post', url, create_data, users, lambda: Milestone.objects.all().delete())
results = helper_test_http_method(client, 'post', url, create_data, users,
lambda: Milestone.objects.all().delete())
assert results == [401, 403, 403, 201, 201]
create_data = json.dumps({

View File

@ -1,4 +1,5 @@
from unittest import mock
import json
from django.core.urlresolvers import reverse
@ -23,31 +24,32 @@ Issue #2
assert issues[1].subject == "Issue #2"
@mock.patch("taiga.projects.issues.services.db")
def test_create_issues_in_bulk(db):
data = """
Issue #1
Issue #2
"""
issues = services.create_issues_in_bulk(data)
db.save_in_bulk.assert_called_once_with(issues, None, None)
with mock.patch("taiga.projects.issues.services.db") as db:
issues = services.create_issues_in_bulk(data)
db.save_in_bulk.assert_called_once_with(issues, None, None)
@mock.patch("taiga.projects.issues.services.db")
def test_update_issues_order_in_bulk(db):
def test_update_issues_order_in_bulk():
data = [(1, 1), (2, 2)]
services.update_issues_order_in_bulk(data)
db.update_in_bulk_with_ids.assert_called_once_with([1, 2], [{"order": 1}, {"order": 2}],
model=models.Issue)
with mock.patch("taiga.projects.issues.services.db") as db:
services.update_issues_order_in_bulk(data)
db.update_in_bulk_with_ids.assert_called_once_with([1, 2], [{"order": 1}, {"order": 2}],
model=models.Issue)
def test_api_create_issues_in_bulk(client):
project = f.create_project()
url = reverse("issues-bulk-create")
data = {"bulk_issues": "Issue #1\nIssue #2",
data = {"bulk_issues": "Issue #1\nIssue #2\n",
"project_id": project.id}
client.login(project.owner)

View File

@ -20,13 +20,12 @@ def test_get_members_from_bulk():
assert members[1].email == "member2@email.com"
@mock.patch("taiga.projects.services.members.db")
def test_create_members_in_bulk(db):
data = [{"role_id": "1", "email": "member1@email.com"},
{"role_id": "1", "email": "member2@email.com"}]
members = services.create_members_in_bulk(data, project_id=1)
db.save_in_bulk.assert_called_once_with(members, None, None)
def test_create_members_in_bulk():
with mock.patch("taiga.projects.services.members.db") as db:
data = [{"role_id": "1", "email": "member1@email.com"},
{"role_id": "1", "email": "member2@email.com"}]
members = services.create_members_in_bulk(data, project_id=1)
db.save_in_bulk.assert_called_once_with(members, None, None)
def test_api_create_bulk_members(client):

View File

@ -25,5 +25,4 @@ def test_api_partially_update_project(client):
client.login(project.owner)
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 400

View File

@ -1,18 +1,11 @@
import pytest
from django.db import models
from taiga.base import tags
pytestmark = pytest.mark.django_db
class TaggedModel(tags.TaggedMixin, models.Model):
class Meta:
app_label = "base"
from taiga.base import tags
from tests.models import TaggedModel
def test():
def test_tags():
tags1 = TaggedModel.objects.create(tags=["foo", "bar"])
tags2 = TaggedModel.objects.create(tags=["foo"])

View File

@ -1,4 +1,5 @@
from unittest import mock
import json
from django.core.urlresolvers import reverse
@ -23,15 +24,14 @@ Task #2
assert tasks[1].subject == "Task #2"
@mock.patch("taiga.projects.tasks.services.db")
def test_create_tasks_in_bulk(db):
data = """
Task #1
Task #2
"""
tasks = services.create_tasks_in_bulk(data)
db.save_in_bulk.assert_called_once_with(tasks, None, None)
with mock.patch("taiga.projects.tasks.services.db") as db:
tasks = services.create_tasks_in_bulk(data)
db.save_in_bulk.assert_called_once_with(tasks, None, None)
def test_api_update_task_tags(client):

View File

@ -1,5 +1,4 @@
from unittest import mock
from django.core.urlresolvers import reverse
from taiga.base.utils import json
@ -23,24 +22,24 @@ User Story #2
assert userstories[1].subject == "User Story #2"
@mock.patch("taiga.projects.userstories.services.db")
def test_create_userstories_in_bulk(db):
def test_create_userstories_in_bulk():
data = """
User Story #1
User Story #2
"""
userstories = services.create_userstories_in_bulk(data)
db.save_in_bulk.assert_called_once_with(userstories, None, None)
with mock.patch("taiga.projects.userstories.services.db") as db:
userstories = services.create_userstories_in_bulk(data)
db.save_in_bulk.assert_called_once_with(userstories, None, None)
@mock.patch("taiga.projects.userstories.services.db")
def test_update_userstories_order_in_bulk(db):
def test_update_userstories_order_in_bulk():
data = [{"us_id": 1, "order": 1}, {"us_id": 2, "order": 2}]
services.update_userstories_order_in_bulk(data)
db.update_in_bulk_with_ids.assert_called_once_with([1, 2], [{"order": 1}, {"order": 2}],
model=models.UserStory)
with mock.patch("taiga.projects.userstories.services.db") as db:
services.update_userstories_order_in_bulk(data)
db.update_in_bulk_with_ids.assert_called_once_with([1, 2], [{"order": 1}, {"order": 2}],
model=models.UserStory)
def test_api_delete_userstory(client):

View File

@ -76,6 +76,7 @@ def test_get_issue_votes(client):
user = f.UserFactory.create()
issue = f.create_issue(owner=user)
url = reverse("issues-detail", args=(issue.id,))
f.VotesFactory.create(content_object=issue, count=5)
client.login(user)

7
tests/models.py Normal file
View File

@ -0,0 +1,7 @@
from django.db import models
from taiga.base import tags
class TaggedModel(tags.TaggedMixin, models.Model):
class Meta:
app_label = "tests"

View File

@ -3,47 +3,38 @@ from unittest import mock
from taiga import celery
from taiga.deferred import defer, call_async, apply_async
from ..utils import set_settings
@set_settings(CELERY_ALWAYS_EAGER=False)
@mock.patch("taiga.deferred.app")
def test_defer(app):
def test_defer():
# settings.CELERY_ALWAYS_EAGER = True
name = "task name"
args = (1, 2)
kwargs = {"kw": "keyword argument"}
defer(name, *args, **kwargs)
app.send_task.assert_called_once_with(name, args, kwargs, routing_key="transient.deferred")
with mock.patch("taiga.deferred.app") as app:
defer(name, *args, **kwargs)
app.tasks[name].apply.assert_called_once_with(args, kwargs,
routing_key="transient.deferred")
@set_settings(CELERY_ALWAYS_EAGER=False)
@mock.patch("taiga.deferred.app")
def test_apply_async(app):
def test_apply_async():
name = "task name"
args = (1, 2)
kwargs = {"kw": "keyword argument"}
apply_async(name, args, kwargs)
app.send_task.assert_called_once_with(name, args, kwargs)
with mock.patch("taiga.deferred.app") as app:
apply_async(name, args, kwargs)
app.tasks[name].apply.assert_called_once_with(args, kwargs)
@set_settings(CELERY_ALWAYS_EAGER=False)
@mock.patch("taiga.deferred.app")
def test_call_async(app):
def test_call_async():
name = "task name"
args = (1, 2)
kwargs = {"kw": "keyword argument"}
call_async(name, *args, **kwargs)
app.send_task.assert_called_once_with(name, args, kwargs)
with mock.patch("taiga.deferred.app") as app:
call_async(name, *args, **kwargs)
app.tasks[name].apply.assert_called_once_with(args, kwargs)
@set_settings(CELERY_ALWAYS_EAGER=True)
def test_task_invocation():
celery.app.task(name="_test_task")(lambda: 1)
assert defer("_test_task").get() == 1