updates
This commit is contained in:
119
Backend/src/tests/README.md
Normal file
119
Backend/src/tests/README.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# Integration Tests
|
||||
|
||||
This directory contains comprehensive integration tests for the Hotel Booking API backend.
|
||||
|
||||
## Overview
|
||||
|
||||
The integration tests cover all major API endpoints and test the entire backend functionality end-to-end. Tests use an in-memory SQLite database to ensure fast execution and isolation between tests.
|
||||
|
||||
## Test Structure
|
||||
|
||||
- `conftest.py` - Pytest fixtures and test configuration
|
||||
- `test_integration_auth.py` - Authentication endpoints (register, login, logout, etc.)
|
||||
- `test_integration_rooms.py` - Room management endpoints
|
||||
- `test_integration_bookings.py` - Booking creation and management
|
||||
- `test_integration_payments.py` - Payment and invoice endpoints
|
||||
- `test_integration_services.py` - Service and service booking endpoints
|
||||
- `test_integration_promotions.py` - Promotion code validation and management
|
||||
- `test_integration_reviews.py` - Review endpoints
|
||||
- `test_integration_users.py` - User management endpoints
|
||||
- `test_integration_favorites.py` - Favorite rooms endpoints
|
||||
- `test_integration_health.py` - Health check and monitoring endpoints
|
||||
- `test_integration_other_endpoints.py` - Other endpoints (banners, pages, etc.)
|
||||
|
||||
## Running Tests
|
||||
|
||||
### Run all integration tests:
|
||||
```bash
|
||||
cd Backend
|
||||
pytest src/tests/ -v -m integration
|
||||
```
|
||||
|
||||
### Run specific test file:
|
||||
```bash
|
||||
pytest src/tests/test_integration_auth.py -v
|
||||
```
|
||||
|
||||
### Run with coverage:
|
||||
```bash
|
||||
pytest src/tests/ -v -m integration --cov=src --cov-report=html
|
||||
```
|
||||
|
||||
### Run specific test:
|
||||
```bash
|
||||
pytest src/tests/test_integration_auth.py::TestAuthEndpoints::test_register_user -v
|
||||
```
|
||||
|
||||
## Test Fixtures
|
||||
|
||||
The `conftest.py` file provides several useful fixtures:
|
||||
|
||||
- `db_session` - Database session for each test
|
||||
- `client` - Test client without authentication
|
||||
- `authenticated_client` - Test client with user authentication
|
||||
- `admin_client` - Test client with admin authentication
|
||||
- `staff_client` - Test client with staff authentication
|
||||
- `test_user`, `test_admin_user`, `test_staff_user` - Test users
|
||||
- `test_room`, `test_room_type` - Test room data
|
||||
- `test_booking` - Test booking
|
||||
- `test_service`, `test_promotion` - Test services and promotions
|
||||
|
||||
## Test Coverage
|
||||
|
||||
The integration tests cover:
|
||||
|
||||
1. **Authentication & Authorization**
|
||||
- User registration
|
||||
- Login/logout
|
||||
- Token refresh
|
||||
- Password management
|
||||
- Role-based access control
|
||||
|
||||
2. **Rooms**
|
||||
- Listing rooms with filters
|
||||
- Room availability search
|
||||
- Room details
|
||||
- Room management (admin)
|
||||
|
||||
3. **Bookings**
|
||||
- Creating bookings
|
||||
- Viewing bookings
|
||||
- Updating booking status
|
||||
- Canceling bookings
|
||||
- Booking with promotions
|
||||
|
||||
4. **Payments & Invoices**
|
||||
- Payment creation
|
||||
- Payment status updates
|
||||
- Invoice generation
|
||||
- Invoice retrieval
|
||||
|
||||
5. **Services**
|
||||
- Service listing
|
||||
- Service bookings
|
||||
- Service management
|
||||
|
||||
6. **Other Features**
|
||||
- Reviews
|
||||
- Favorites
|
||||
- Promotions
|
||||
- User management
|
||||
- Health checks
|
||||
|
||||
## Notes
|
||||
|
||||
- Tests use an in-memory SQLite database for speed and isolation
|
||||
- Each test gets a fresh database session
|
||||
- Tests are marked with `@pytest.mark.integration` for easy filtering
|
||||
- Some endpoints may return 404 if not yet implemented - tests handle this gracefully
|
||||
- Authentication is tested with different user roles (guest, staff, admin)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If tests fail:
|
||||
|
||||
1. Ensure all dependencies are installed: `pip install -r requirements.txt`
|
||||
2. Check that the database models are properly imported
|
||||
3. Verify that the test database can be created (SQLite should work out of the box)
|
||||
4. Check for any missing environment variables (though tests should work with defaults)
|
||||
|
||||
Reference in New Issue
Block a user