-
Notifications
You must be signed in to change notification settings - Fork 16
/
test_article_prepare_update_admin.py
81 lines (63 loc) · 3.13 KB
/
test_article_prepare_update_admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from parameterized import parameterized
from combinatrix.testintegration import load_parameter_sets
from doajtest.fixtures import ArticleFixtureFactory, AccountFixtureFactory, JournalFixtureFactory
from doajtest.helpers import DoajTestCase
from portality.bll import DOAJ
from portality.bll import exceptions
from portality.models import Article, Account, Journal
from portality.lib.paths import rel2abs
from doajtest.mocks.bll_article import BLLArticleMockFactory
EXCEPTIONS = {
"ArgumentException": exceptions.ArgumentException,
"DuplicateArticleException": exceptions.DuplicateArticleException,
"ArticleNotAcceptable": exceptions.ArticleNotAcceptable
}
def prepare_update_admin_load_cases():
return load_parameter_sets(rel2abs(__file__, "..", "matrices", "article_create_article"), "prepare_update_admin",
"test_id",
{"test_id": []})
class TestBLLPrepareUpdatePublisher(DoajTestCase):
def setUp(self):
super(TestBLLPrepareUpdatePublisher, self).setUp()
self.svc = DOAJ.articleService()
self.is_id_updated = self.svc._doi_or_fulltext_updated
self.merge = Article.merge
self.pull = Article.pull
def tearDown(self):
super(TestBLLPrepareUpdatePublisher, self).tearDown()
self.svc._doi_or_fulltext_updated = self.is_id_updated
Article.merge = self.merge
Article.pull = self.pull
@parameterized.expand(prepare_update_admin_load_cases)
def test_prepare_update_admin(self, value, kwargs):
Article.merge = BLLArticleMockFactory.merge_mock
Article.pull = BLLArticleMockFactory.pull_mock
duplicate_arg = kwargs.get("duplicate")
merge_duplicate_arg = kwargs.get("merge_duplicate")
is_update_arg = kwargs.get("is_update")
raises_arg = kwargs.get("raises")
pissn1 = "1234-5678"
eissn1 = "9876-5432"
pissn2 = "1111-1111"
eissn2 = "2222-2222"
doi = "10.1234/article-10"
ft = "https://example.com"
update_article_id = "update_id"
article_src = ArticleFixtureFactory.make_article_source(pissn=pissn1, eissn=eissn1, doi=doi, fulltext=ft)
article = Article(**article_src)
article.set_id("article_id")
duplicate = None
if duplicate_arg != "none":
duplicate_src = ArticleFixtureFactory.make_article_source(pissn=pissn2, eissn=eissn2, doi=doi, fulltext=ft)
duplicate = Article(**duplicate_src)
if duplicate_arg == "same_as_update_article_id":
duplicate.set_id("update_id")
elif duplicate_arg == "different_then_update_article_id":
duplicate.set_id("duplicate_id")
merge_duplicate = True if merge_duplicate_arg == "yes" else False
if raises_arg == "DuplicateArticle":
with self.assertRaises(exceptions.DuplicateArticleException):
self.svc._prepare_update_admin(article, duplicate, update_article_id, merge_duplicate)
else:
assert self.svc._prepare_update_admin(article, duplicate, update_article_id, merge_duplicate) == int(
is_update_arg)