SciPost Code Repository
Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
SciPost
Manage
Activity
Members
Labels
Plan
Issues
118
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SciPost
SciPost
Commits
64402eda
Commit
64402eda
authored
1 year ago
by
George Katsikas
Browse files
Options
Downloads
Patches
Plain Diff
add factories for all scipost models
parent
fc441de9
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
scipost_django/scipost/factories.py
+58
-4
58 additions, 4 deletions
scipost_django/scipost/factories.py
scipost_django/scipost/tests/test_factories.py
+100
-0
100 additions, 0 deletions
scipost_django/scipost/tests/test_factories.py
with
158 additions
and
4 deletions
scipost_django/scipost/factories.py
+
58
−
4
View file @
64402eda
...
...
@@ -7,11 +7,13 @@ import pytz
from
django.contrib.auth
import
get_user_model
from
django.contrib.auth.models
import
Group
from
journals.models.publication
import
Publication
from
profiles.factories
import
ProfileFactory
from
submissions.models.submission
import
Submission
from
.constants
import
NORMAL_CONTRIBUTOR
from
.models
import
Contributor
,
Remark
,
TOTPDevice
from
common.faker
import
fake
from
.models
import
*
from
common.faker
import
LazyRandEnum
,
fake
class
ContributorFactory
(
factory
.
django
.
DjangoModelFactory
):
...
...
@@ -20,10 +22,11 @@ class ContributorFactory(factory.django.DjangoModelFactory):
django_get_or_create
=
(
"
user
"
,)
user
=
factory
.
SubFactory
(
"
scipost.factories.UserFactory
"
,
contributor
=
None
)
profile
=
factory
.
Sub
Factory
(
profile
=
factory
.
Related
Factory
(
ProfileFactory
,
first_name
=
factory
.
SelfAttribute
(
"
..user.first_name
"
),
last_name
=
factory
.
SelfAttribute
(
"
..user.last_name
"
),
factory_related_name
=
"
contributor
"
,
)
invitation_key
=
factory
.
Faker
(
"
md5
"
)
activation_key
=
factory
.
Faker
(
"
md5
"
)
...
...
@@ -33,10 +36,13 @@ class ContributorFactory(factory.django.DjangoModelFactory):
@classmethod
def
from_profile
(
cls
,
profile
):
return
cls
(
contributor
=
cls
(
user__first_name
=
profile
.
first_name
,
user__last_name
=
profile
.
last_name
,
)
contributor
.
profile
=
profile
contributor
.
save
()
return
contributor
class
VettingEditorFactory
(
ContributorFactory
):
...
...
@@ -64,6 +70,7 @@ class UserFactory(factory.django.DjangoModelFactory):
class
Meta
:
model
=
get_user_model
()
django_get_or_create
=
(
"
username
"
,)
@factory.post_generation
def
groups
(
self
,
create
,
extracted
,
**
kwargs
):
...
...
@@ -80,6 +87,13 @@ class UserFactory(factory.django.DjangoModelFactory):
)
class
GroupFactory
(
factory
.
django
.
DjangoModelFactory
):
name
=
factory
.
Faker
(
"
word
"
)
class
Meta
:
model
=
Group
class
TOTPDeviceFactory
(
factory
.
django
.
DjangoModelFactory
):
user
=
factory
.
SubFactory
(
"
scipost.factories.UserFactory
"
)
name
=
factory
.
Faker
(
"
pystr
"
)
...
...
@@ -87,6 +101,7 @@ class TOTPDeviceFactory(factory.django.DjangoModelFactory):
class
Meta
:
model
=
TOTPDevice
django_get_or_create
=
(
"
user
"
,
"
name
"
)
class
SubmissionRemarkFactory
(
factory
.
django
.
DjangoModelFactory
):
...
...
@@ -97,3 +112,42 @@ class SubmissionRemarkFactory(factory.django.DjangoModelFactory):
class
Meta
:
model
=
Remark
class
UnavailabilityPeriodFactory
(
factory
.
django
.
DjangoModelFactory
):
class
Meta
:
model
=
UnavailabilityPeriod
contributor
=
factory
.
SubFactory
(
ContributorFactory
)
start
=
factory
.
Faker
(
"
date_time_this_decade
"
)
end
=
factory
.
LazyAttribute
(
lambda
self
:
fake
.
aware
.
date_between
(
start_date
=
self
.
start
,
end_date
=
"
+1y
"
)
)
class
AuthorshipClaimFactory
(
factory
.
django
.
DjangoModelFactory
):
class
Meta
:
model
=
AuthorshipClaim
claimant
=
factory
.
SubFactory
(
ContributorFactory
)
status
=
LazyRandEnum
(
AUTHORSHIP_CLAIM_STATUS
)
vetted_by
=
factory
.
LazyAttribute
(
lambda
self
:
VettingEditorFactory
()
if
self
.
status
!=
0
else
None
)
class
CitationNotificationFactory
(
factory
.
django
.
DjangoModelFactory
):
class
Meta
:
model
=
CitationNotification
class
Params
:
item
=
None
contributor
=
factory
.
SubFactory
(
ContributorFactory
)
processed
=
factory
.
Faker
(
"
boolean
"
)
cited_in_submission
=
factory
.
LazyAttribute
(
lambda
self
:
self
.
item
if
isinstance
(
self
.
item
,
Submission
)
else
None
)
cited_in_publication
=
factory
.
LazyAttribute
(
lambda
self
:
self
.
item
if
isinstance
(
self
.
item
,
Publication
)
else
None
)
This diff is collapsed.
Click to expand it.
scipost_django/scipost/tests/test_factories.py
0 → 100644
+
100
−
0
View file @
64402eda
from
django.test
import
TestCase
from
profiles.factories
import
ProfileFactory
from
scipost.constants
import
AUTHORSHIP_CLAIM_ACCEPTED
from
..factories
import
*
from
submissions.factories
import
SubmissionFactory
from
journals.factories
import
JournalPublicationFactory
class
TestContributorFactory
(
TestCase
):
def
test_can_create_contributors
(
self
):
contributor
=
ContributorFactory
()
self
.
assertIsNotNone
(
contributor
)
def
test_contributor_user_and_profile_have_same_name
(
self
):
contributor
=
ContributorFactory
()
self
.
assertEqual
(
contributor
.
profile
.
first_name
,
contributor
.
user
.
first_name
)
self
.
assertEqual
(
contributor
.
profile
.
last_name
,
contributor
.
user
.
last_name
)
def
test_contributor_user_name_propagates_to_profile
(
self
):
contributor
=
ContributorFactory
(
user__first_name
=
"
John
"
,
user__last_name
=
"
Doe
"
)
self
.
assertEqual
(
contributor
.
profile
.
first_name
,
"
John
"
)
self
.
assertEqual
(
contributor
.
profile
.
last_name
,
"
Doe
"
)
def
test_contributor_from_user_refers_to_user_used
(
self
):
user
=
UserFactory
(
first_name
=
"
John
"
,
last_name
=
"
Doe
"
)
contributor
=
ContributorFactory
(
user
=
user
)
self
.
assertEqual
(
contributor
.
user
,
user
)
def
test_contributor_from_profile_refers_to_profile_used
(
self
):
profile
=
ProfileFactory
(
title
=
"
Mr
"
,
first_name
=
"
John
"
,
last_name
=
"
Doe
"
)
contributor
=
ContributorFactory
.
from_profile
(
profile
)
self
.
assertEqual
(
contributor
.
profile
,
profile
)
class
TestUserFactory
(
TestCase
):
def
test_can_create_users
(
self
):
user
=
UserFactory
()
self
.
assertIsNotNone
(
user
)
def
test_user_username_contains_first_and_last_name
(
self
):
user
=
UserFactory
(
first_name
=
"
John
"
,
last_name
=
"
Doe
"
)
self
.
assertEqual
(
user
.
username
,
"
jdoe
"
)
class
TestTOTPDeviceFactory
(
TestCase
):
def
test_can_create_totp_devices
(
self
):
totp_device
=
TOTPDeviceFactory
()
self
.
assertIsNotNone
(
totp_device
)
class
TestSubmissionRemarkFactory
(
TestCase
):
def
test_can_create_submission_remarks
(
self
):
submission_remark
=
SubmissionRemarkFactory
()
self
.
assertIsNotNone
(
submission_remark
)
class
TestUnavailabilityPeriodFactory
(
TestCase
):
def
test_can_create_unavailability_periods
(
self
):
unavailability_period
=
UnavailabilityPeriodFactory
()
self
.
assertIsNotNone
(
unavailability_period
)
class
TestAuthorshipClaimFactory
(
TestCase
):
def
test_can_create_authorship_claims
(
self
):
authorship_claim
=
AuthorshipClaimFactory
()
self
.
assertIsNotNone
(
authorship_claim
)
def
test_non_pending_authorship_claim_has_editor
(
self
):
authorship_claim
=
AuthorshipClaimFactory
(
status
=
AUTHORSHIP_CLAIM_ACCEPTED
)
self
.
assertIsNotNone
(
authorship_claim
.
vetted_by
)
self
.
assertIsNotNone
(
authorship_claim
)
def
test_pending_authorship_claim_has_no_editor
(
self
):
authorship_claim
=
AuthorshipClaimFactory
(
status
=
AUTHORSHIP_CLAIM_PENDING
)
self
.
assertIsNone
(
authorship_claim
.
vetted_by
)
self
.
assertIsNotNone
(
authorship_claim
)
class
TestCitationNotificationFactory
(
TestCase
):
def
test_can_create_citation_notifications_with_publication
(
self
):
citation_notification
=
CitationNotificationFactory
(
item
=
JournalPublicationFactory
()
)
self
.
assertIsNotNone
(
citation_notification
.
cited_in_publication
)
self
.
assertIsNone
(
citation_notification
.
cited_in_submission
)
self
.
assertIsNotNone
(
citation_notification
)
def
test_can_create_citation_notifications_with_submission
(
self
):
citation_notification
=
CitationNotificationFactory
(
item
=
SubmissionFactory
())
self
.
assertIsNotNone
(
citation_notification
.
cited_in_submission
)
self
.
assertIsNone
(
citation_notification
.
cited_in_publication
)
self
.
assertIsNotNone
(
citation_notification
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment