inital checkin
This commit is contained in:
73
tests/test_core.py
Normal file
73
tests/test_core.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from users.models import User
|
||||
from store.models import Game, Set, Card, CardListing, Cart
|
||||
from decks.models import Deck, DeckCard
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestModels:
|
||||
def test_user_profile_created_signal(self):
|
||||
user = User.objects.create_user('testuser', 'test@example.com', 'password')
|
||||
assert hasattr(user, 'profile')
|
||||
assert user.profile.is_pro is False
|
||||
|
||||
def test_cart_total_price(self, db):
|
||||
user = User.objects.create_user('cartuser', 'c@e.com', 'pass')
|
||||
cart = Cart.objects.create(user=user)
|
||||
|
||||
game = Game.objects.create(name="G", slug="g")
|
||||
set_ = Set.objects.create(game=game, name="S")
|
||||
card = Card.objects.create(set=set_, name="C")
|
||||
listing = CardListing.objects.create(card=card, price=10.00, quantity=5)
|
||||
|
||||
cart.items.create(listing=listing, quantity=2)
|
||||
assert cart.total_price == 20.00
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestStoreViews:
|
||||
def test_card_list_view(self, client):
|
||||
url = reverse('store:card_list')
|
||||
response = client.get(url)
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_add_to_cart_requires_login(self, client):
|
||||
listing = CardListing.objects.create(
|
||||
card=Card.objects.create(
|
||||
set=Set.objects.create(
|
||||
game=Game.objects.create(name="G", slug="g"),
|
||||
name="S"
|
||||
),
|
||||
name="C"
|
||||
),
|
||||
price=10.00
|
||||
)
|
||||
url = reverse('store:add_to_cart', args=[listing.id])
|
||||
response = client.post(url)
|
||||
assert response.status_code == 302 # Redirect to login
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestDeckViews:
|
||||
@pytest.fixture
|
||||
def pro_user(self):
|
||||
u = User.objects.create_user('pro', 'pro@e.com', 'pass')
|
||||
u.profile.is_pro = True
|
||||
u.profile.save()
|
||||
return u
|
||||
|
||||
@pytest.fixture
|
||||
def basic_user(self):
|
||||
return User.objects.create_user('basic', 'basic@e.com', 'pass')
|
||||
|
||||
def test_deck_builder_access_pro(self, client, pro_user):
|
||||
client.force_login(pro_user)
|
||||
deck = Deck.objects.create(user=pro_user, name="Pro Deck", game=Game.objects.create(name="G", slug="g"))
|
||||
url = reverse('decks:deck_builder', args=[deck.id])
|
||||
response = client.get(url)
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_deck_builder_access_basic(self, client, basic_user):
|
||||
client.force_login(basic_user)
|
||||
# Basic user tries to access create page
|
||||
url = reverse('decks:deck_create')
|
||||
response = client.get(url)
|
||||
assert response.status_code == 302 # Redirect expected
|
||||
Reference in New Issue
Block a user