Добавил интеграционные тесты для User, Film, and FilmLibrary репозиториев
application-test.yaml: настройка тестового окружения
Summary by CodeRabbit
Tests
Added comprehensive JDBC-backed integration tests for persistence covering users, films, and library entries: CRUD operations, updates, null and edge cases, long-field preservation, find/all behaviors, deletes (including no-op deletes), and cascade delete verification.
Chores
Added a test runtime configuration standardizing an in-memory database, enabling migrations during tests, and defining test-only service constraints.
Добавил интеграционные тесты для User, Film, and FilmLibrary репозиториев
application-test.yaml: настройка тестового окружения
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
* **Tests**
* Added comprehensive JDBC-backed integration tests for persistence covering users, films, and library entries: CRUD operations, updates, null and edge cases, long-field preservation, find/all behaviors, deletes (including no-op deletes), and cascade delete verification.
* **Chores**
* Added a test runtime configuration standardizing an in-memory database, enabling migrations during tests, and defining test-only service constraints.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Adds three Spring Boot JDBC integration test classes for UserRepository, FilmRepository, and FilmLibraryRepository, plus a test profile config. Tests use an H2 in-memory DB with Flyway, exercise CRUD, edge cases (null/long fields), non-existent deletes, and cascade deletes for FilmLibrary entries.
Added JUnit5 Spring Boot integration tests for JDBC repositories. Tests bootstrap context under test profile, clean DB before/after each test, and verify save/update, findById, findAll, deleteById, non-existent deletions, null handling, long descriptions, and cascade deletes for FilmLibrary when parent User or Film is removed.
Test Configuration src/test/resources/application-test.yaml
Added test Spring configuration: H2 in-memory datasource in PostgreSQL mode (DB_CLOSE_DELAY=-1), Flyway enabled with migrations at classpath:db/migration, credentials/driver, and test-only service constraints (services.user.blocked-names, services.film.blocked-patterns).
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
Poem
🐇 I dug a burrow in test-time soil,
Seeding users, films, and tidy toil.
Migrations hum, the rows align,
Cascade hops when parents resign.
A happy rabbit stamps — "All fine!"
Note
🎁 Summarized by CodeRabbit Free
Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.
Comment @coderabbitai help to get the list of available commands and usage tips.
<!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<details>
<summary>ℹ️ Recent review info</summary>
<details>
<summary>⚙️ Run configuration</summary>
**Configuration used**: Organization UI
**Review profile**: ASSERTIVE
**Plan**: Free
**Run ID**: `b7805061-32a8-41a9-a09c-e1640a1377ad`
</details>
<details>
<summary>📥 Commits</summary>
Reviewing files that changed from the base of the PR and between 49f74d1898b1da8aee3e0deebcdad9b04d2c6628 and 4f0e8ccbd40250d0e5cca4ade8fc2d44c9e7bc03.
</details>
<details>
<summary>📒 Files selected for processing (3)</summary>
* `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmLibraryRepositoryIntegrationTest.kt`
* `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmRepositoryIntegrationTest.kt`
* `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/UserRepositoryIntegrationTest.kt`
</details>
</details>
---
<!-- walkthrough_start -->
<details>
<summary>📝 Walkthrough</summary>
## Walkthrough
Adds three Spring Boot JDBC integration test classes for UserRepository, FilmRepository, and FilmLibraryRepository, plus a test profile config. Tests use an H2 in-memory DB with Flyway, exercise CRUD, edge cases (null/long fields), non-existent deletes, and cascade deletes for FilmLibrary entries.
## Changes
|Cohort / File(s)|Summary|
|---|---|
|**Repository Integration Tests** <br> `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/UserRepositoryIntegrationTest.kt`, `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmRepositoryIntegrationTest.kt`, `src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmLibraryRepositoryIntegrationTest.kt`|Added JUnit5 Spring Boot integration tests for JDBC repositories. Tests bootstrap context under `test` profile, clean DB before/after each test, and verify save/update, findById, findAll, deleteById, non-existent deletions, null handling, long descriptions, and cascade deletes for FilmLibrary when parent User or Film is removed.|
|**Test Configuration** <br> `src/test/resources/application-test.yaml`|Added test Spring configuration: H2 in-memory datasource in PostgreSQL mode (DB_CLOSE_DELAY=-1), Flyway enabled with migrations at `classpath:db/migration`, credentials/driver, and test-only service constraints (`services.user.blocked-names`, `services.film.blocked-patterns`).|
## Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
## Poem
> 🐇 I dug a burrow in test-time soil,
> Seeding users, films, and tidy toil.
> Migrations hum, the rows align,
> Cascade hops when parents resign.
> A happy rabbit stamps — "All fine!"
</details>
<!-- walkthrough_end -->
<!-- tips_start -->
---
> [!NOTE]
> <details>
> <summary>🎁 Summarized by CodeRabbit Free</summary>
>
> Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting <https://app.coderabbit.ai/login>.
>
> </details>
<sub>Comment `@coderabbitai help` to get the list of available commands and usage tips.</sub>
<!-- tips_end -->
<!-- internal state start -->
<!-- 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 -->
<!-- internal state end -->
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
<!-- This is an auto-generated reply by CodeRabbit -->
<details>
<summary>✅ Actions performed</summary>
Review triggered.
> Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
</details>
devitq
(Migrated from github.com)
approved these changes 2026-04-23 19:55:20 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Добавил интеграционные тесты для User, Film, and FilmLibrary репозиториев
application-test.yaml: настройка тестового окружения
Summary by CodeRabbit
ℹ️ Recent review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Free
Run ID:
b7805061-32a8-41a9-a09c-e1640a1377ad📥 Commits
Reviewing files that changed from the base of the PR and between
49f74d1898and4f0e8ccbd4.📒 Files selected for processing (3)
src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmLibraryRepositoryIntegrationTest.ktsrc/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmRepositoryIntegrationTest.ktsrc/test/kotlin/com/project/movienight/adapters/persistence/jdbc/UserRepositoryIntegrationTest.kt📝 Walkthrough
Walkthrough
Adds three Spring Boot JDBC integration test classes for UserRepository, FilmRepository, and FilmLibraryRepository, plus a test profile config. Tests use an H2 in-memory DB with Flyway, exercise CRUD, edge cases (null/long fields), non-existent deletes, and cascade deletes for FilmLibrary entries.
Changes
src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/UserRepositoryIntegrationTest.kt,src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmRepositoryIntegrationTest.kt,src/test/kotlin/com/project/movienight/adapters/persistence/jdbc/FilmLibraryRepositoryIntegrationTest.kttestprofile, clean DB before/after each test, and verify save/update, findById, findAll, deleteById, non-existent deletions, null handling, long descriptions, and cascade deletes for FilmLibrary when parent User or Film is removed.src/test/resources/application-test.yamlclasspath:db/migration, credentials/driver, and test-only service constraints (services.user.blocked-names,services.film.blocked-patterns).Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~25 minutes
Poem
Comment
@coderabbitai helpto get the list of available commands and usage tips.@coderabbitai full review
✅ Actions performed
Full review triggered.
@copilot review
Провел ревью и внес правку по результату: исправил форматирование в интеграционных тестах для прохождения ktlint. Коммит:
4f0e8cc.@coderabbitai review
✅ Actions performed
Review triggered.
LGTM