本文整理汇总了Python中doajtest.fixtures.ApplicationFixtureFactory类的典型用法代码示例。如果您正苦于以下问题:Python ApplicationFixtureFactory类的具体用法?Python ApplicationFixtureFactory怎么用?Python ApplicationFixtureFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ApplicationFixtureFactory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_03_classification_required
def test_03_classification_required(self):
# Check we can accept an application with a subject classification present
ready_application = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
ready_application.set_application_status(constants.APPLICATION_STATUS_READY)
fc = formcontext.ApplicationFormFactory.get_form_context(role='admin', source=ready_application)
# Make changes to the application status via the form, check it validates
fc.form.application_status.data = constants.APPLICATION_STATUS_ACCEPTED
assert fc.validate()
# Without a subject classification, we should not be able to set the status to 'accepted'
no_class_application = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
del no_class_application.data['bibjson']['subject']
fc = formcontext.ApplicationFormFactory.get_form_context(role='admin', source=no_class_application)
# Make changes to the application status via the form
assert fc.source.bibjson().subjects() == []
fc.form.application_status.data = constants.APPLICATION_STATUS_ACCEPTED
assert not fc.validate()
# However, we should be able to set it to a different status rather than 'accepted'
fc.form.application_status.data = constants.APPLICATION_STATUS_IN_PROGRESS
assert fc.validate()
示例2: test_02_classification_required
def test_02_classification_required(self):
# Check we can mark an application 'completed' with a subject classification present
in_progress_application = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
in_progress_application.set_application_status(constants.APPLICATION_STATUS_IN_PROGRESS)
fc = formcontext.ApplicationFormFactory.get_form_context(role='associate_editor', source=in_progress_application)
# Make changes to the application status via the form, check it validates
fc.form.application_status.data = constants.APPLICATION_STATUS_COMPLETED
assert fc.validate()
# Without a subject classification, we should not be able to set the status to 'completed'
no_class_application = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
del no_class_application.data['bibjson']['subject']
fc = formcontext.ApplicationFormFactory.get_form_context(role='associate_editor', source=no_class_application)
# Make changes to the application status via the form
assert fc.source.bibjson().subjects() == []
fc.form.application_status.data = constants.APPLICATION_STATUS_COMPLETED
assert not fc.validate()
# However, we should be able to set it to a different status rather than 'completed'
fc.form.application_status.data = constants.APPLICATION_STATUS_PENDING
assert fc.validate()
示例3: test_03_delete_application_success
def test_03_delete_application_success(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
del data["admin"]["current_journal"]
dataset = [data] * 10
# create the account we're going to work as
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
account.add_role("publisher")
# call create on the objects (which will save it to the index)
ids = ApplicationsBulkApi.create(dataset, account)
# let the index catch up
time.sleep(2)
# now delete half of them
dels = ids[:5]
ApplicationsBulkApi.delete(dels, account)
# let the index catch up
time.sleep(2)
for id in dels:
ap = models.Suggestion.pull(id)
assert ap is None
for id in ids[5:]:
ap = models.Suggestion.pull(id)
assert ap is not None
示例4: test_01_create_applications_success
def test_01_create_applications_success(self):
# set up all the bits we need - 10 applications
data = ApplicationFixtureFactory.incoming_application()
del data["admin"]["current_journal"]
dataset = [data] * 10
# create an account that we'll do the create as
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
# call create on the object (which will save it to the index)
ids = ApplicationsBulkApi.create(dataset, account)
# check that we got the right number of ids back
assert len(ids) == 10
# let the index catch up
time.sleep(2)
# check that each id was actually created
for id in ids:
s = models.Suggestion.pull(id)
assert s is not None
示例5: test_06_make_journal
def test_06_make_journal(self):
s = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
j = s.make_journal()
assert j.id != s.id
assert "suggestion" not in j.data
assert j.data.get("bibjson", {}).get("active")
示例6: setUp
def setUp(self):
super(TestTaskSuggestionBulkEdit, self).setUp()
acc = models.Account()
acc.set_id("0987654321")
acc.set_email("[email protected]")
acc.save()
egs = EditorGroupFixtureFactory.make_editor_group_source("1234567890", "0987654321")
egm = models.EditorGroup(**egs)
egm.save(blocking=True)
self.suggestions = []
for app_src in ApplicationFixtureFactory.make_many_application_sources(count=TEST_SUGGESTION_COUNT):
self.suggestions.append(models.Suggestion(**app_src))
self.suggestions[-1].set_editor_group("1234567890")
self.suggestions[-1].set_editor("0987654321")
self.suggestions[-1].save()
self.default_eg = EditorGroupFixtureFactory.setup_editor_group_with_editors()
self.forbidden_accounts = [
AccountFixtureFactory.make_editor_source()['id'],
AccountFixtureFactory.make_assed1_source()['id'],
AccountFixtureFactory.make_assed2_source()['id'],
AccountFixtureFactory.make_assed3_source()['id']
]
self._make_and_push_test_context(acc=models.Account(**AccountFixtureFactory.make_managing_editor_source()))
示例7: test_08_publisher_result_filter
def test_08_publisher_result_filter(self):
apsrc_admin = ApplicationFixtureFactory.make_application_source()['admin']
# Not all of these properties are applicable to applications, but these test objects are not applications:
# they are made-up admin sections designed solely to test whether the filter lets the right keys through.
# We just use applications as a base to construct them.
apsrc_admin['ticked'] = True
apsrc_admin['in_doaj'] = True
apsrc_admin['related_applications'] = [1,2,3]
apsrc_admin['current_application'] = 'abcde'
allowed = ["ticked", "seal", "in_doaj", "related_applications", "current_application", "current_journal", "application_status"]
forbidden = ['notes', 'contact', 'editor_group', 'editor', 'related_journal']
res = {
"hits": {
"hits": [
{ "_type": "article", "_source": { "admin": deepcopy(apsrc_admin), "bibjson": {}}},
{ "_type": "article", "_source": { "admin": deepcopy(apsrc_admin), "bibjson": {}}},
{ "_type": "article", "_source": { "admin": deepcopy(apsrc_admin), "bibjson": {}}}
],
"total": 3
}
}
newres = query_filters.publisher_result_filter(res)
for n, r in enumerate(newres['hits']['hits']):
for allowed_k in allowed:
assert allowed_k in r['_source']['admin'], \
'{} key not found in result {}, but it is allowed and should have been left intact by the filter'.format(allowed_k, n)
for forbidden_k in forbidden:
assert forbidden_k not in r['_source']['admin'], \
'{} key was found in result {}, but it is forbidden and should have been stripped out by the filter'.format(forbidden_k, n)
示例8: create_edit_cases
def create_edit_cases():
application_source = ApplicationFixtureFactory.make_application_source()
account_source = AccountFixtureFactory.make_publisher_source()
editable_application = Suggestion(**application_source)
editable_application.set_application_status(constants.APPLICATION_STATUS_UPDATE_REQUEST)
non_editable_application = Suggestion(**application_source)
non_editable_application.set_application_status(constants.APPLICATION_STATUS_READY)
owner_account = Account(**deepcopy(account_source))
owner_account.set_id(editable_application.owner)
non_owner_publisher = Account(**deepcopy(account_source))
non_publisher = Account(**deepcopy(account_source))
non_publisher.remove_role("publisher")
admin = Account(**deepcopy(account_source))
admin.add_role("admin")
return [
param("no_app_no_account", None, None, raises=exceptions.ArgumentException),
param("no_app_with_account", None, owner_account, raises=exceptions.ArgumentException),
param("app_no_account", editable_application, None, raises=exceptions.ArgumentException),
param("editable_app_owning_account", editable_application, owner_account, expected=True),
param("editable_app_nonowning_account", editable_application, non_owner_publisher, raises=exceptions.AuthoriseException),
param("editable_app_non_publisher_account", editable_application, non_publisher, raises=exceptions.AuthoriseException),
param("editable_app_admin_account", editable_application, admin, expected=True),
param("non_editable_app_owning_account", non_editable_application, owner_account, raises=exceptions.AuthoriseException),
param("non_editable_app_nonowning_account", non_editable_application, non_owner_publisher, raises=exceptions.AuthoriseException),
param("non_editable_app_non_publisher_account", non_editable_application, non_publisher, raises=exceptions.AuthoriseException),
param("non_editable_app_admin_account", non_editable_application, admin, expected=True)
]
示例9: test_15_create_application_update_request_dryrun
def test_15_create_application_update_request_dryrun(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
account.add_role("publisher")
journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True))
journal.bibjson().remove_identifiers()
journal.bibjson().add_identifier(journal.bibjson().E_ISSN, "9999-8888")
journal.bibjson().add_identifier(journal.bibjson().P_ISSN, "7777-6666")
journal.bibjson().title = "not changed"
journal.set_id(data["admin"]["current_journal"])
journal.set_owner(account.id)
journal.save(blocking=True)
# call create on the object, with the dry_run flag set
a = ApplicationsCrudApi.create(data, account, dry_run=True)
time.sleep(2)
# now check that the application index remains empty
ss = [x for x in models.Suggestion.iterall()]
assert len(ss) == 0
示例10: test_02a_create_application_success_variations
def test_02a_create_application_success_variations(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
del data["admin"]["current_journal"]
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
# try with only one issn
data["bibjson"]["identifier"] = [
{
"type" : "pissn",
"id": "1234-5678"
}
]
# call create on the object (which will save it to the index)
a = ApplicationsCrudApi.create(data, account)
# check that it got created successfully
assert isinstance(a, models.Suggestion)
time.sleep(2)
s = models.Suggestion.pull(a.id)
assert s is not None
示例11: test_09_update_application_fail
def test_09_update_application_fail(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
del data["admin"]["current_journal"]
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
# call create on the object (which will save it to the index)
a = ApplicationsCrudApi.create(data, account)
# let the index catch up
time.sleep(2)
# get a copy of the newly created version for use in assertions later
created = models.Suggestion.pull(a.id)
# now make an updated version of the object
data = ApplicationFixtureFactory.incoming_application()
del data["admin"]["current_journal"]
data["bibjson"]["title"] = "An updated title"
# call update on the object in various context that will fail
# without an account
with self.assertRaises(Api401Error):
ApplicationsCrudApi.update(a.id, data, None)
# with the wrong account
account.set_id("other")
with self.assertRaises(Api404Error):
ApplicationsCrudApi.update(a.id, data, account)
# on the wrong id
account.set_id("test")
with self.assertRaises(Api404Error):
ApplicationsCrudApi.update("adfasdfhwefwef", data, account)
# on one with a disallowed workflow status
created.set_application_status(constants.APPLICATION_STATUS_ACCEPTED)
created.save()
time.sleep(2)
account.add_role("publisher")
with self.assertRaises(Api403Error):
ApplicationsCrudApi.update(a.id, data, account)
示例12: test_16_update_application_update_request_success
def test_16_update_application_update_request_success(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
account.add_role("publisher")
journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True))
journal.bibjson().remove_identifiers()
journal.bibjson().add_identifier(journal.bibjson().E_ISSN, "9999-8888")
journal.bibjson().add_identifier(journal.bibjson().P_ISSN, "7777-6666")
journal.bibjson().title = "not changed"
journal.set_id(data["admin"]["current_journal"])
journal.set_owner(account.id)
journal.save(blocking=True)
# call create on the object (which will save it to the index)
a = ApplicationsCrudApi.create(data, account)
# let the index catch up
time.sleep(2)
# get a copy of the newly created version for use in assertions later
created = models.Suggestion.pull(a.id)
# now make an updated version of the object
data = ApplicationFixtureFactory.incoming_application()
data["bibjson"]["title"] = "An updated title"
data["bibjson"]["publisher"] = "An updated publisher"
# call update on the object
a2 = ApplicationsCrudApi.update(a.id, data, account)
assert a2 != a
# let the index catch up
time.sleep(2)
# get a copy of the updated version
updated = models.Suggestion.pull(a.id)
# now check the properties to make sure the update tool
assert updated.bibjson().title == "not changed"
assert updated.bibjson().publisher == "An updated publisher"
assert updated.created_date == created.created_date
示例13: test_14_make_journal_from_reapp
def test_14_make_journal_from_reapp(self):
# with history
j = models.Journal()
j.set_id("1234567")
j.set_created("2001-01-01T00:00:00Z")
j.add_history({"title" : "old title"})
j.save()
s = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
s.set_current_journal("1234567")
time.sleep(1)
j = s.make_journal()
j.save()
assert j.id == "1234567"
assert "suggestion" not in j.data
assert j.last_reapplication is not None
assert j.data.get("bibjson", {}).get("active")
assert j.current_application is None
assert j.data.get("admin", {}).get("current_journal") is None
assert j.created_date == "2001-01-01T00:00:00Z"
assert j.get_history_raw()[0].get("bibjson", {}).get("title") == "old title"
# without history
j = models.Journal()
j.set_id("1234567")
j.set_created("2001-01-01T00:00:00Z")
j.save()
s = models.Suggestion(**ApplicationFixtureFactory.make_application_source())
s.set_current_journal("1234567")
time.sleep(1)
j = s.make_journal()
j.save()
assert j.id == "1234567"
assert "suggestion" not in j.data
assert j.last_reapplication is not None
assert j.data.get("bibjson", {}).get("active")
assert j.current_application is None
assert j.data.get("admin", {}).get("current_journal") is None
assert j.created_date == "2001-01-01T00:00:00Z"
assert len(j.history()) == 0
示例14: test_03b_create_update_request_fail
def test_03b_create_update_request_fail(self):
# update request target not found
with self.assertRaises(Api404Error):
data = ApplicationFixtureFactory.incoming_application()
publisher = models.Account(**AccountFixtureFactory.make_publisher_source())
try:
a = ApplicationsCrudApi.create(data, publisher)
except Api404Error as e:
raise
# if a formcontext exception is raised on finalise
publisher = models.Account(**AccountFixtureFactory.make_publisher_source())
journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True))
journal.set_id(journal.makeid())
journal.set_owner(publisher.id)
journal.save(blocking=True)
formcontext.FormContext.finalise = mock_finalise_exception
with self.assertRaises(Api400Error):
data = ApplicationFixtureFactory.incoming_application()
data["admin"]["current_journal"] = journal.id
try:
a = ApplicationsCrudApi.create(data, publisher)
except Api400Error as e:
assert e.message == "test exception"
raise
formcontext.FormContext.finalise = self.old_finalise
# validation fails on the formcontext
publisher = models.Account(**AccountFixtureFactory.make_publisher_source())
journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True))
journal.set_id(journal.makeid())
journal.set_owner(publisher.id)
journal.save(blocking=True)
IncomingApplication.custom_validate = mock_custom_validate_always_pass
with self.assertRaises(Api400Error):
data = ApplicationFixtureFactory.incoming_application()
# duff submission charges url should trip the validator
data["bibjson"]["submission_charges_url"] = "not a url!"
data["admin"]["current_journal"] = journal.id
try:
a = ApplicationsCrudApi.create(data, publisher)
except Api400Error as e:
raise
示例15: test_13_create_application_update_request_success
def test_13_create_application_update_request_success(self):
# set up all the bits we need
data = ApplicationFixtureFactory.incoming_application()
account = models.Account()
account.set_id("test")
account.set_name("Tester")
account.set_email("[email protected]")
account.add_role("publisher")
account.save(blocking=True)
journal = models.Journal(**JournalFixtureFactory.make_journal_source(in_doaj=True))
journal.bibjson().remove_identifiers()
journal.bibjson().add_identifier(journal.bibjson().E_ISSN, "9999-8888")
journal.bibjson().add_identifier(journal.bibjson().P_ISSN, "7777-6666")
journal.bibjson().title = "not changed"
journal.set_id(data["admin"]["current_journal"])
journal.set_owner(account.id)
journal.save(blocking=True)
# call create on the object (which will save it to the index)
a = ApplicationsCrudApi.create(data, account)
# check that it got created with the right properties
assert isinstance(a, models.Suggestion)
assert a.id != "ignore_me"
assert a.created_date != "2001-01-01T00:00:00Z"
assert a.last_updated != "2001-01-01T00:00:00Z"
assert a.suggester.get("name") == "Tester" # The suggester should be the owner of the existing journal
assert a.suggester.get("email") == "[email protected]"
assert a.owner == "test"
assert a.suggested_on is not None
assert a.bibjson().issns() == ["9999-8888", "7777-6666"] or a.bibjson().issns() == ["7777-6666", "9999-8888"]
assert a.bibjson().title == "not changed"
# also, because it's a special case, check the archiving_policy
archiving_policy = a.bibjson().archiving_policy
assert len(archiving_policy.get("policy")) == 4
lcount = 0
scount = 0
for ap in archiving_policy.get("policy"):
if isinstance(ap, list):
lcount += 1
assert ap[0] in ["A national library", "Other"]
assert ap[1] in ["Trinity", "A safe place"]
else:
scount += 1
assert lcount == 2
assert scount == 2
assert "CLOCKSS" in archiving_policy.get("policy")
assert "LOCKSS" in archiving_policy.get("policy")
time.sleep(2)
s = models.Suggestion.pull(a.id)
assert s is not None