56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
# tests/test_shop.py
|
|
import pytest
|
|
|
|
|
|
class TestShopsAPI:
|
|
def test_create_shop(self, client, auth_headers):
|
|
"""Test creating a new shop"""
|
|
shop_data = {
|
|
"shop_code": "NEWSHOP",
|
|
"shop_name": "New Shop",
|
|
"description": "A new test shop"
|
|
}
|
|
|
|
response = client.post("/api/v1/shops", headers=auth_headers, json=shop_data)
|
|
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["shop_code"] == "NEWSHOP"
|
|
assert data["shop_name"] == "New Shop"
|
|
assert data["is_active"] == True
|
|
|
|
def test_create_shop_duplicate_code(self, client, auth_headers, test_shop):
|
|
"""Test creating shop with duplicate code"""
|
|
shop_data = {
|
|
"shop_code": "TESTSHOP", # Same as test_shop
|
|
"shop_name": "Another Shop"
|
|
}
|
|
|
|
response = client.post("/api/v1/shops", headers=auth_headers, json=shop_data)
|
|
|
|
assert response.status_code == 400
|
|
assert "already exists" in response.json()["detail"]
|
|
|
|
def test_get_shops(self, client, auth_headers, test_shop):
|
|
"""Test getting shops list"""
|
|
response = client.get("/api/v1/shops", headers=auth_headers)
|
|
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["total"] >= 1
|
|
assert len(data["shops"]) >= 1
|
|
|
|
def test_get_shop_by_code(self, client, auth_headers, test_shop):
|
|
"""Test getting specific shop"""
|
|
response = client.get(f"/api/v1/shops/{test_shop.shop_code}", headers=auth_headers)
|
|
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["shop_code"] == test_shop.shop_code
|
|
assert data["shop_name"] == test_shop.shop_name
|
|
|
|
def test_shops_require_auth(self, client):
|
|
"""Test that shop endpoints require authentication"""
|
|
response = client.get("/api/v1/shops")
|
|
assert response.status_code == 403
|