Files
relspecgo/tests/postgres/README.md
Hein db6cd21511
Some checks are pending
CI / Build (push) Waiting to run
CI / Test (1.23) (push) Waiting to run
CI / Test (1.24) (push) Waiting to run
CI / Test (1.25) (push) Waiting to run
CI / Lint (push) Waiting to run
Added more examples and pgsql reader
2025-12-17 10:08:50 +02:00

132 lines
3.5 KiB
Markdown

# PostgreSQL Integration Tests
This directory contains Docker-based integration tests for the PostgreSQL reader.
## Quick Start
Run integration tests with Docker:
```bash
# From project root
make docker-test
```
Or use the script directly:
```bash
./tests/postgres/run_tests.sh
```
## Manual Testing
Start the PostgreSQL test database:
```bash
make docker-up
```
Run tests with the running database:
```bash
export RELSPEC_TEST_PG_CONN="postgres://relspec:relspec_test_password@localhost:5433/relspec_test"
go test -v ./pkg/readers/pgsql/
```
Stop the database:
```bash
make docker-down
```
## Test Database Contents
The test database (`relspec_test`) contains:
### Schemas (3)
- **public**: Main schema with user and blog data
- **analytics**: Event tracking and analytics data
- **inventory**: Product inventory management
### Tables (14 total)
- **public.users**: User accounts with various data types
- **public.posts**: Blog posts with foreign keys
- **public.comments**: Nested comments (self-referencing FK)
- **public.categories**: Post categories
- **public.post_categories**: Many-to-many junction table
- **analytics.events**: Event tracking
- **analytics.page_views**: Page view analytics
- **analytics.conversions**: Conversion tracking
- **inventory.products**: Product catalog
- **inventory.warehouses**: Warehouse locations
- **inventory.stock**: Product stock by warehouse
### Views (8 total)
- **public.active_users**: Active users only
- **public.published_posts**: Published posts with author info
- **public.post_stats**: Post statistics
- **analytics.daily_stats**: Daily aggregated statistics
- **analytics.top_pages**: Most viewed pages
- **inventory.available_products**: Available products with stock
- **inventory.low_stock_products**: Products with low inventory
### Sequences (5 total)
- **public.users_id_seq**: Users ID sequence
- **public.posts_id_seq**: Posts ID sequence (with cycle)
- **analytics.events_id_seq**: Events ID sequence
- Plus auto-generated sequences for serial columns
### Constraint Types
- **Primary Keys**: All tables have PKs
- **Foreign Keys**: Including cross-schema references
- **Unique Constraints**: Username, email, SKU, etc.
- **Check Constraints**: Age limits, status validation, balance checks
### Index Types
- **btree**: Standard B-tree indexes
- **gin**: GIN indexes for JSONB and array columns
- **hash**: Hash indexes for session lookups
- **Unique**: Unique indexes
- **Partial**: Conditional indexes (WHERE clauses)
- **Composite**: Multi-column indexes
## Connection Details
- **Host**: localhost
- **Port**: 5433 (to avoid conflicts with local PostgreSQL)
- **Database**: relspec_test
- **User**: relspec
- **Password**: relspec_test_password
Full connection string:
```
postgres://relspec:relspec_test_password@localhost:5433/relspec_test
```
## Requirements
- Docker or Docker Compose
- Go 1.25+
## Makefile Targets
- `make docker-up` - Start PostgreSQL container
- `make docker-down` - Stop PostgreSQL container
- `make docker-test` - Run full test suite with automatic cleanup
- `make docker-test-integration` - Run integration tests only
## Test Coverage
The tests verify:
- Schema introspection (excluding system schemas)
- Table metadata extraction
- View definitions and columns
- Sequence properties and ownership
- Column data types and constraints
- Primary key detection
- Foreign key relationships with referential actions
- Unique and check constraints
- Index types and definitions
- Cross-schema relationships
- Data type mapping
- Error handling