"""
Tests for 404, 403, 500 error handlers.
"""
import json


class TestErrorHandlers:
    def test_404_html_page(self, client):
        r = client.get('/this/path/does/not/exist/at/all')
        assert r.status_code == 404
        assert b'Not Found' in r.data or b'404' in r.data

    def test_404_api_returns_json(self, gm_client):
        r = gm_client.get('/api/nonexistent_endpoint_xyz')
        assert r.status_code == 404
        data = json.loads(r.data)
        assert 'error' in data

    def test_403_api_returns_json(self, cashier_client):
        """Cashier hitting a manager-only endpoint should get 403 JSON."""
        r = cashier_client.get('/api/users')
        assert r.status_code == 403
        data = json.loads(r.data)
        assert 'error' in data
