def test_new_purchase(test_app, test_db): from rifaserver.models import Seller, Purchase seller = Seller(username='test', password_hash='test') test_db.session.add(seller) test_db.session.commit() with test_app.test_client() as client: resp = client.post('/seller', data={'amount': 5}) assert resp.status_code == 200 assert Purchase.query.count() == 1 purchase = Purchase.query.first() assert purchase.total_numbers == 5 assert purchase.numbers_left == 5 def test_ticket_purchase(test_app, test_db): from rifaserver.models import Seller, Purchase, Raffle, Ticket seller = Seller(username='test', password_hash='test') test_db.session.add(seller) raffle = Raffle(description='test raffle') test_db.session.add(raffle) test_db.session.commit() purchase = Purchase(id='test123', seller_id=seller.id, total_numbers=5, numbers_left=5) test_db.session.add(purchase) test_db.session.commit() with test_app.test_client() as client: resp = client.post(f'/purchase/{purchase.id}', data={'raffle_id': raffle.id, 'name': 'test buyer', 'contact': 'test contact', 'number': 1}) assert resp.status_code == 200 assert purchase.numbers_left == 4 assert Ticket.query.count() == 1 ticket = Ticket.query.first() assert ticket.buyer_name == 'test buyer' assert ticket.buyer_contact == 'test contact' assert ticket.chosen_number == 1 def test_valid_login(test_app, test_db): from your_flask_app.models import Seller seller = Seller(username='test', password_hash='test') test_db.session.add(seller) test_db.session.commit() with test_app.test_client() as client: resp = client.post('/login', data={'username': 'test', 'password': 'test'}, follow_redirects=True) assert resp.status_code == 200 assert b'Logged in successfully' in resp.data def test_invalid_login(test_app): with test_app.test_client() as client: resp = client.post('/login', data={'username': 'test', 'password': 'wrong_password'}, follow_redirects=True) assert resp.status_code == 200 assert b'Invalid username or password' in resp.data def test_protected_route_while_logged_in(test_app, test_db): from your_flask_app.models import Seller seller = Seller(username='test', password_hash='test') test_db.session.add(seller) test_db.session.commit() with test_app.test_client() as client: client.post('/login', data={'username': 'test', 'password': 'test'}, follow_redirects=True) resp = client.get('/seller', follow_redirects=True) assert resp.status_code == 200