mirror of
https://github.com/bnair123/MusicAnalyser.git
synced 2026-02-25 11:46:07 +00:00
- Stats: Added K-Means clustering, Tempo Zones, Harmonic Profile. - Narrative: Optimized for Gemini tokens + JSON robustness. - Testing: Added comprehensive backend/TESTING.md and standalone test script. - Setup: Improved get_refresh_token.py for user onboarding.
77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
# Testing Guide
|
|
|
|
This project includes a comprehensive test suite to verify the calculation engine (`StatsService`) and the AI narrative generation (`NarrativeService`).
|
|
|
|
## 1. Quick Start (Standalone Test)
|
|
|
|
You can run the full stats verification script without installing `pytest`. This script uses an in-memory SQLite database, seeds it with synthetic listening history (including skips, sessions, and specific genres), and prints the computed analysis JSON.
|
|
|
|
```bash
|
|
# Ensure you are in the root directory
|
|
# If you are using the virtual environment:
|
|
source backend/venv/bin/activate
|
|
|
|
# Run the test
|
|
python backend/tests/test_stats_full.py
|
|
```
|
|
|
|
### What does this verify?
|
|
- **Volume Metrics:** Total plays, unique tracks/artists.
|
|
- **Session Logic:** Correctly groups plays into sessions based on 20-minute gaps.
|
|
- **Skip Detection:** Identifies "boredom skips" based on timestamp deltas.
|
|
- **Vibe Analysis:** Verifies K-Means clustering, tempo zones, and harmonic profiles.
|
|
- **Context Analysis:** Checks if plays are correctly attributed to Playlists/Albums.
|
|
|
|
## 2. Generating a Spotify Refresh Token
|
|
|
|
To run the actual application, you need a Spotify Refresh Token. We provide a script to automate the OAuth flow.
|
|
|
|
1. **Prerequisites:**
|
|
* Go to [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/).
|
|
* Create an App.
|
|
* In settings, add `http://localhost:8888/callback` to "Redirect URIs".
|
|
* Get your **Client ID** and **Client Secret**.
|
|
|
|
2. **Run the Script:**
|
|
```bash
|
|
python backend/scripts/get_refresh_token.py
|
|
```
|
|
|
|
3. **Follow Instructions:**
|
|
* Enter your Client ID/Secret when prompted.
|
|
* The script will open your browser.
|
|
* Log in to Spotify and authorize the app.
|
|
* The script will print your `SPOTIFY_REFRESH_TOKEN` in the terminal.
|
|
|
|
4. **Save to .env:**
|
|
Copy the output into your `.env` file.
|
|
|
|
## 3. Full Test Suite (Pytest)
|
|
|
|
If you wish to run the full suite using `pytest` (recommended for CI/CD), install the dev dependencies:
|
|
|
|
```bash
|
|
pip install pytest
|
|
```
|
|
|
|
Then run:
|
|
|
|
```bash
|
|
pytest backend/tests
|
|
```
|
|
|
|
## 4. Manual Verification
|
|
|
|
To verify the system end-to-end with real data:
|
|
|
|
1. Start the backend:
|
|
```bash
|
|
python backend/run_worker.py
|
|
```
|
|
2. Wait for a few minutes for data to ingest (check logs).
|
|
3. Run the analysis manually:
|
|
```bash
|
|
python backend/run_analysis.py
|
|
```
|
|
4. Check the database or logs for the generated `AnalysisSnapshot`.
|