137 lines
4.3 KiB
Python
137 lines
4.3 KiB
Python
from flask import url_for
|
|
|
|
from lib.tests import ViewTestMixin, assert_status_with_message
|
|
from snakeeyes.blueprints.user.models import User
|
|
|
|
|
|
class TestDashboard(ViewTestMixin):
|
|
def test_dashboard_page(self):
|
|
self.login()
|
|
response = self.client.get(url_for('admin.dashboard'))
|
|
|
|
assert bytes('User'.encode('utf-8')) in response.data
|
|
|
|
|
|
class TestUsers(ViewTestMixin):
|
|
def test_index_page(self):
|
|
""" Index renders successfully. """
|
|
self.login()
|
|
response = self.client.get(url_for('admin.users'))
|
|
|
|
assert response.status_code == 200
|
|
|
|
def test_edit_page(self):
|
|
""" Edit page renders successfully. """
|
|
self.login()
|
|
response = self.client.get(url_for('admin.users_edit', id=1))
|
|
|
|
assert_status_with_message(200, response, 'admin@local.host')
|
|
|
|
def test_edit_resource(self):
|
|
""" Edit this resource successfully. """
|
|
params = {
|
|
'role': 'admin',
|
|
'username': 'foo',
|
|
'active': True
|
|
}
|
|
|
|
self.login()
|
|
response = self.client.post(url_for('admin.users_edit', id=1),
|
|
data=params, follow_redirects=True)
|
|
|
|
assert_status_with_message(200, response,
|
|
'User has been saved successfully.')
|
|
|
|
def test_bulk_delete_nothing(self):
|
|
""" Last admin account should not get deleted. """
|
|
old_count = User.query.count()
|
|
params = {
|
|
'bulk_ids': [1],
|
|
'scope': 'all_selected_items'
|
|
}
|
|
|
|
self.login()
|
|
response = self.client.post(url_for('admin.users_bulk_delete'),
|
|
data=params, follow_redirects=True)
|
|
|
|
assert_status_with_message(200, response,
|
|
'0 user(s) were scheduled to be deleted.')
|
|
|
|
new_count = User.query.count()
|
|
assert old_count == new_count
|
|
|
|
def test_cancel_subscription(self, subscriptions, mock_stripe):
|
|
""" User subscription gets cancelled. """
|
|
user = User.find_by_identity('subscriber@local.host')
|
|
params = {
|
|
'id': user.id
|
|
}
|
|
|
|
self.login()
|
|
response = self.client.post(url_for('admin.users_cancel_subscription'),
|
|
data=params, follow_redirects=True)
|
|
|
|
assert_status_with_message(200, response,
|
|
'Subscription has been cancelled for Subby')
|
|
assert user.cancelled_subscription_on is not None
|
|
|
|
|
|
class TestCoupon(ViewTestMixin):
|
|
def test_index_page(self):
|
|
""" Index renders successfully. """
|
|
self.login()
|
|
response = self.client.get(url_for('admin.coupons'))
|
|
|
|
assert response.status_code == 200
|
|
|
|
def test_new_page(self, coupons):
|
|
""" New page renders successfully. """
|
|
self.login()
|
|
response = self.client.get(url_for('admin.coupons_new'))
|
|
|
|
assert response.status_code == 200
|
|
|
|
def test_new_resource(self, mock_stripe):
|
|
""" Edit this resource successfully. """
|
|
params = {
|
|
'code': '1337',
|
|
'duration': 'repeating',
|
|
'percent_off': 5,
|
|
'amount_off': None,
|
|
'currency': 'usd',
|
|
'redeem_by': None,
|
|
'max_redemptions': 10,
|
|
'duration_in_months': 5,
|
|
}
|
|
|
|
self.login()
|
|
response = self.client.post(url_for('admin.coupons_new'),
|
|
data=params, follow_redirects=True)
|
|
|
|
assert_status_with_message(200, response,
|
|
'Coupon has been created successfully.')
|
|
|
|
def test_bulk_delete(self, coupons, mock_stripe):
|
|
""" Resource gets bulk deleted. """
|
|
params = {
|
|
'bulk_ids': [1, 2, 3],
|
|
'scope': 'all_selected_items'
|
|
}
|
|
|
|
self.login()
|
|
response = self.client.post(url_for('admin.coupons_bulk_delete'),
|
|
data=params, follow_redirects=True)
|
|
|
|
assert_status_with_message(200, response,
|
|
'{0} coupons(s)'
|
|
' were scheduled to be deleted.'.format(3))
|
|
|
|
|
|
class TestInvoices(ViewTestMixin):
|
|
def test_index_page(self):
|
|
""" Index renders successfully. """
|
|
self.login()
|
|
response = self.client.get(url_for('admin.invoices'))
|
|
|
|
assert response.status_code == 200
|