Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
thalia
concrexit
Commits
1f646fa5
Commit
1f646fa5
authored
Jan 15, 2020
by
Sébastiaan Versteeg
Committed by
Luko van der Maas
Jan 15, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Increase payments coverage
parent
2ebc4ee3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
167 additions
and
61 deletions
+167
-61
.gitlab-ci.yml
.gitlab-ci.yml
+1
-1
website/.coveragerc
website/.coveragerc
+1
-1
website/members/models.py
website/members/models.py
+5
-6
website/payments/services.py
website/payments/services.py
+3
-1
website/payments/tests/test_services.py
website/payments/tests/test_services.py
+36
-2
website/payments/tests/test_views.py
website/payments/tests/test_views.py
+121
-50
No files found.
.gitlab-ci.yml
View file @
1f646fa5
...
...
@@ -47,7 +47,7 @@ codestyle:
-
poetry run python manage.py makemigrations --no-input --check --dry-run
-
poetry run python -Wall -mcoverage run manage.py test
-
coverage report --fail-under=100 --omit registrations/urls.py registrations/**.py
-
coverage report --fail-under=
97.32
--omit payments/urls.py payments/**.py
-
coverage report --fail-under=
100
--omit payments/urls.py payments/**.py
-
coverage report
python37-django22
:
...
...
website/.coveragerc
View file @
1f646fa5
...
...
@@ -15,4 +15,4 @@ source = .
precision = 2
skip_covered = True
show_missing = True
fail_under = 6
0
fail_under = 6
5
website/members/models.py
View file @
1f646fa5
...
...
@@ -20,7 +20,6 @@ from django.utils.crypto import get_random_string
from
django.utils.translation
import
pgettext_lazy
,
gettext_lazy
as
_
from
payments.models
import
BankAccount
from
thaliawebsite.settings
import
THALIA_PAY_ENABLED_PAYMENT_METHOD
from
activemembers.models
import
MemberGroup
,
MemberGroupMembership
from
utils
import
countries
...
...
@@ -203,11 +202,11 @@ class Member(User):
def
tpay_enabled
(
self
):
"""Does this user have a bank account with Direct Debit enabled"""
bank_accounts
=
BankAccount
.
objects
.
filter
(
owner
=
self
)
if
THALIA_PAY_ENABLED_PAYMENT_METHOD
and
bank_accounts
.
exists
():
if
bank_accounts
.
last
().
valid
:
return
True
else
:
return
False
return
(
settings
.
THALIA_PAY_ENABLED_PAYMENT_METHOD
and
bank_accounts
.
exists
()
and
bank_accounts
.
last
().
valid
)
def
_profile_image_path
(
_instance
,
_filename
):
...
...
website/payments/services.py
View file @
1f646fa5
...
...
@@ -30,7 +30,9 @@ def process_payment(
# the processing date
for
payment
in
queryset
:
if
pay_type
!=
Payment
.
TPAY
or
(
pay_type
==
Payment
.
TPAY
and
payment
.
paid_by
.
tpay_enabled
pay_type
==
Payment
.
TPAY
and
payment
.
paid_by
and
payment
.
paid_by
.
tpay_enabled
):
payment
.
type
=
pay_type
payment
.
processed_by
=
processed_by
...
...
website/payments/tests/test_services.py
View file @
1f646fa5
...
...
@@ -4,11 +4,11 @@ from freezegun import freeze_time
from
members.models
import
Member
from
payments
import
services
from
payments.models
import
BankAccount
from
payments.models
import
BankAccount
,
Payment
@
freeze_time
(
"2019-01-01"
)
@
override_settings
(
SUSPEND_SIGNALS
=
True
)
@
override_settings
(
SUSPEND_SIGNALS
=
True
,
THALIA_PAY_ENABLED_PAYMENT_METHOD
=
True
)
class
ServicesTest
(
TestCase
):
"""
Test for the services
...
...
@@ -20,6 +20,40 @@ class ServicesTest(TestCase):
def
setUpTestData
(
cls
):
cls
.
member
=
Member
.
objects
.
filter
(
last_name
=
"Wiggers"
).
first
()
def
test_process_payment
(
self
):
BankAccount
.
objects
.
create
(
owner
=
self
.
member
,
initials
=
"J"
,
last_name
=
"Test"
,
iban
=
"NL91ABNA0417164300"
,
mandate_no
=
"11-2"
,
valid_from
=
timezone
.
now
().
date
()
-
timezone
.
timedelta
(
days
=
5
),
last_used
=
timezone
.
now
().
date
()
-
timezone
.
timedelta
(
days
=
5
),
signature
=
"base64,png"
,
)
p1
=
Payment
.
objects
.
create
(
type
=
Payment
.
NONE
,
notes
=
"Test payment"
,
amount
=
1
)
r1
=
services
.
process_payment
(
Payment
.
objects
.
filter
(
pk
=
p1
.
pk
),
self
.
member
,
Payment
.
CARD
)
self
.
assertEqual
(
r1
,
[
p1
])
p2
=
Payment
.
objects
.
create
(
type
=
Payment
.
NONE
,
notes
=
"Test payment"
,
amount
=
2
)
r2
=
services
.
process_payment
(
Payment
.
objects
.
filter
(
pk
=
p2
.
pk
),
self
.
member
,
Payment
.
TPAY
)
self
.
assertEqual
(
r2
,
[])
p3
=
Payment
.
objects
.
create
(
type
=
Payment
.
NONE
,
notes
=
"Test payment"
,
amount
=
3
,
paid_by
=
self
.
member
)
self
.
assertTrue
(
self
.
member
.
tpay_enabled
)
r3
=
services
.
process_payment
(
Payment
.
objects
.
filter
(
pk
=
p3
.
pk
),
self
.
member
,
Payment
.
TPAY
)
self
.
assertEqual
(
r3
,
[
p3
])
def
test_update_last_used
(
self
):
BankAccount
.
objects
.
create
(
owner
=
self
.
member
,
...
...
website/payments/tests/test_views.py
View file @
1f646fa5
from
django.contrib.auth
import
get_user_model
from
django.test
import
Client
,
TestCase
,
override_settings
from
freezegun
import
freeze_time
from
django.urls
import
reverse
from
freezegun
import
freeze_time
from
members.models
import
Member
from
payments.models
import
BankAccount
from
payments.views
import
BankAccountCreateView
,
BankAccountListView
from
payments.models
import
BankAccount
,
Payment
@
freeze_time
(
"2019-01-01"
)
...
...
@@ -34,7 +33,6 @@ class BankAccountCreateViewTest(TestCase):
)
def
setUp
(
self
):
self
.
view
=
BankAccountCreateView
()
self
.
client
=
Client
()
self
.
client
.
force_login
(
self
.
login_user
)
...
...
@@ -193,51 +191,6 @@ class BankAccountRevokeViewTest(TestCase):
fixtures
=
[
"members.json"
]
@
classmethod
def
setUpTestData
(
cls
):
cls
.
login_user
=
Member
.
objects
.
filter
(
last_name
=
"Wiggers"
).
first
()
cls
.
account
=
BankAccount
.
objects
.
create
(
owner
=
cls
.
login_user
,
initials
=
"J"
,
last_name
=
"Test"
,
iban
=
"NL91ABNA0417164300"
,
)
BankAccount
.
objects
.
create
(
owner
=
None
,
initials
=
"Someone"
,
last_name
=
"Else"
,
iban
=
"BE68539007547034"
,
bic
=
"NBBEBEBB"
,
)
def
setUp
(
self
):
self
.
view
=
BankAccountCreateView
()
self
.
client
=
Client
()
self
.
client
.
force_login
(
self
.
login_user
)
def
test_not_logged_in
(
self
):
"""
If there is no logged-in user they should redirect
to the authentication page
"""
self
.
client
.
logout
()
response
=
self
.
client
.
get
(
reverse
(
"payments:bankaccount-add"
),
follow
=
True
)
self
.
assertEqual
(
200
,
response
.
status_code
)
self
.
assertEqual
(
[(
"/user/login/?next="
+
reverse
(
"payments:bankaccount-add"
),
302
)],
response
.
redirect_chain
,
)
@
override_settings
(
SUSPEND_SIGNALS
=
True
)
class
BankAccountListViewTest
(
TestCase
):
"""
Test for the BankAccountListView
"""
fixtures
=
[
"members.json"
]
@
classmethod
def
setUpTestData
(
cls
):
cls
.
login_user
=
Member
.
objects
.
filter
(
last_name
=
"Wiggers"
).
first
()
...
...
@@ -261,7 +214,6 @@ class BankAccountListViewTest(TestCase):
def
setUp
(
self
):
self
.
account1
.
refresh_from_db
()
self
.
account2
.
refresh_from_db
()
self
.
view
=
BankAccountListView
()
self
.
client
=
Client
()
self
.
client
.
force_login
(
self
.
login_user
)
...
...
@@ -348,3 +300,122 @@ class BankAccountListViewTest(TestCase):
.
first
()
.
valid
)
@
override_settings
(
SUSPEND_SIGNALS
=
True
)
class
BankAccountListViewTest
(
TestCase
):
"""
Test for the BankAccountListView
"""
fixtures
=
[
"members.json"
]
@
classmethod
def
setUpTestData
(
cls
):
cls
.
login_user
=
Member
.
objects
.
filter
(
last_name
=
"Wiggers"
).
first
()
cls
.
account1
=
BankAccount
.
objects
.
create
(
owner
=
cls
.
login_user
,
initials
=
"J1"
,
last_name
=
"Test"
,
iban
=
"NL91ABNA0417164300"
,
)
cls
.
account2
=
BankAccount
.
objects
.
create
(
owner
=
Member
.
objects
.
exclude
(
last_name
=
"Wiggers"
).
first
(),
initials
=
"J2"
,
last_name
=
"Test"
,
iban
=
"BE68539007547034"
,
bic
=
"NBBEBEBB"
,
valid_from
=
"2019-03-01"
,
signature
=
"sig"
,
mandate_no
=
"11-2"
,
)
def
setUp
(
self
):
self
.
account1
.
refresh_from_db
()
self
.
account2
.
refresh_from_db
()
self
.
client
=
Client
()
self
.
client
.
force_login
(
self
.
login_user
)
def
test_not_logged_in
(
self
):
"""
If there is no logged-in user they should redirect
to the authentication page
"""
self
.
client
.
logout
()
response
=
self
.
client
.
post
(
reverse
(
"payments:bankaccount-list"
),
follow
=
True
,)
self
.
assertEqual
(
200
,
response
.
status_code
)
self
.
assertEqual
(
[(
"/user/login/?next="
+
reverse
(
"payments:bankaccount-list"
),
302
,)],
response
.
redirect_chain
,
)
def
test_accounts
(
self
):
"""
The page should show only accounts of the logged-in user
"""
response
=
self
.
client
.
get
(
reverse
(
"payments:bankaccount-list"
),
follow
=
True
,)
self
.
assertEqual
(
200
,
response
.
status_code
)
self
.
assertContains
(
response
,
"NL91ABNA0417164300"
)
self
.
assertNotContains
(
response
,
"BE68539007547034"
)
@
freeze_time
(
"2019-04-01"
)
@
override_settings
(
SUSPEND_SIGNALS
=
True
)
class
PaymentListViewTest
(
TestCase
):
"""
Test for the PaymentListView
"""
fixtures
=
[
"members.json"
]
@
classmethod
def
setUpTestData
(
cls
):
cls
.
login_user
=
Member
.
objects
.
filter
(
last_name
=
"Wiggers"
).
first
()
cls
.
account1
=
BankAccount
.
objects
.
create
(
owner
=
cls
.
login_user
,
initials
=
"J1"
,
last_name
=
"Test"
,
iban
=
"NL91ABNA0417164300"
,
valid_from
=
"2019-03-01"
,
signature
=
"sig"
,
mandate_no
=
"11-2"
,
)
cls
.
payment1
=
Payment
.
objects
.
create
(
paid_by
=
cls
.
login_user
,
notes
=
"Testing Payment 1"
,
amount
=
10
,
type
=
Payment
.
CARD
,
processing_date
=
"2019-03-06"
,
)
def
setUp
(
self
):
self
.
account1
.
refresh_from_db
()
self
.
payment1
.
refresh_from_db
()
self
.
client
=
Client
()
self
.
client
.
force_login
(
self
.
login_user
)
def
test_not_logged_in
(
self
):
"""
If there is no logged-in user they should redirect
to the authentication page
"""
self
.
client
.
logout
()
response
=
self
.
client
.
post
(
reverse
(
"payments:payment-list"
),
follow
=
True
,)
self
.
assertEqual
(
200
,
response
.
status_code
)
self
.
assertEqual
(
[(
"/user/login/?next="
+
reverse
(
"payments:payment-list"
),
302
,)],
response
.
redirect_chain
,
)
def
test_contents
(
self
):
"""
Test if the view shows payments
"""
response
=
self
.
client
.
get
(
reverse
(
"payments:payment-list"
,
kwargs
=
{
"year"
:
2019
,
"month"
:
3
}),
follow
=
True
,
)
self
.
assertEqual
(
200
,
response
.
status_code
)
self
.
assertContains
(
response
,
"Testing Payment 1"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment