Conversation
IntegratoR Test Suite quest with enriched mission specs: - testkit: shared test infrastructure (TestKit Foundation) - abstractions: domain primitives and Result types (~51 tests) - application: pipeline behaviours, CQRS handlers (~92 tests) - odata: generic OData client and infrastructure (~59 tests) - odata-fo: D365 F&O entity models and handlers (~56 tests) - relion: RELion integration layer (~41 tests) Total: ~299 tests across 48+ test classes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mark application mission as completed in index. Update agent memory with MediatR delegate signature, NSubstitute visibility, and FluentValidation open-generic registration pitfalls. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add smoke tests for TestKit infrastructure components (entity builder, FakeHttpMessageHandler, FakeCacheService, ResultAssertions). Tests reference types not yet implemented; compilation fails as expected for RED phase. Also adds 5 empty test project shells and updates Directory.Packages.props with Testing item group (xunit.v3, FluentAssertions, NSubstitute, etc.). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add shared test infrastructure project (IntegratoR.TestKit) with: - TestEntity, TestSingleKeyEntity, TestEntityWithODataAttributes doubles - TestEntityBuilder fluent builder with sensible defaults - ResultAssertions / ResultAssertions<T> custom FluentAssertions - FakeHttpMessageHandler with FIFO queue and SentRequests tracking - FakeCacheService in-memory ICacheService implementation - TestCacheableQuery<T> configurable ICacheableQuery test double - InternalsVisibleTo for IntegratoR.OData.Tests All 11 smoke tests pass. Build succeeds with zero errors across all 13 projects. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add 51 unit tests across 8 test classes covering all IntegratoR.Abstractions layer components: BaseEntity reflection/composite key, IntegrationError construction, ResultExtensions GetError/Match, all 3 JSON converters (ResultJsonConverter, ResultJsonConverter<T>, ResultGenericJsonConverter), 6 CQRS command records, and 2 CQRS query records. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 57 tests across 5 test classes for IntegratoR.OData infrastructure: - ODataAuthenticationHandlerTests (6 tests): OAuth and ApiKey auth paths - ODataMetadataProviderTests (6 tests): real temp file I/O and caching - ODataExceptionHandlerTests (19 tests): HTTP status code mappings and exception handling - ODataServiceTests (23 tests): CRUD, query chaining, batch, payload attribute filtering - ApplicationDependencyInjectionTests (5 tests): DI registration verification Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 2 additional tests bringing total to 59: - FindAsync_WithFilter_AppliesFilterAndReturnsEntities (CRUD section) - AddAsync_EntityWithJsonIgnoreAttribute_ExcludesFieldFromPayload (payload section) - Adjust batch tests to verify failure handling via exception handler rather than attempting to mock ODataBatch (concrete class with no virtual methods) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 83 unit tests across 13 test classes covering: - Pipeline behaviours: LoggingBehaviour, ValidationBehaviour, CachingBehaviour - Authentication: OAuthAuthenticator (cache-hit path) - Cache services: InMemoryCacheService, DistributedCacheService - Generic CQRS handlers: Create, Update, Delete commands; GetByKey, GetByFilter queries - All 8 validators: Create/Update/Delete (single + batch), GetByKey, GetByFilter - DI registration: pipeline order, lifetimes, MediatR and validators Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All 83 Application layer unit tests passing. Tests cover the full acceptance criteria: pipeline behaviours, cache services, generic CQRS handlers, 8 validators, and DI registration order/lifetimes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
No structural changes needed -- tests are well-structured with clear AAA pattern, correct naming, and documented edge cases. Full solution suite: 94 passing, 3 skipped (MSAL integration). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
58 tests across 15 test classes covering entity composite keys, FinancialDimensionBuilder, delimiter extensions, dimension query/handler, F&O CQRS create/update handlers, command logging contexts, and DI registration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a comprehensive, multi-project test suite for the IntegratoR framework, including a shared TestKit for fakes/builders/assertions and new unit tests across Abstractions, Application, OData, OData.FO, and RELion.
Changes:
- Introduces
IntegratoR.TestKit(fakes, builders, custom FluentAssertions) plus smoke tests. - Adds new xUnit v3 test projects for Abstractions, Application, OData, OData.FO, and RELion with broad coverage.
- Centralizes test package versions and enables OData internal testing via
InternalsVisibleTo.
Reviewed changes
Copilot reviewed 76 out of 76 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/IntegratoR.TestKit/IntegratoR.TestKit.csproj | Adds shared TestKit project for test helpers |
| tests/IntegratoR.TestKit/Fakes/TestCacheableQuery.cs | Adds a configurable ICacheableQuery<T> test double |
| tests/IntegratoR.TestKit/Fakes/FakeHttpMessageHandler.cs | Adds queued-response HTTP handler fake for pipeline tests |
| tests/IntegratoR.TestKit/Fakes/FakeCacheService.cs | Adds in-memory ICacheService fake for behaviour tests |
| tests/IntegratoR.TestKit/Doubles/Entities/TestSingleKeyEntity.cs | Adds simple single-key entity double for generic tests |
| tests/IntegratoR.TestKit/Doubles/Entities/TestEntityWithODataAttributes.cs | Adds OData-attribute-decorated entity double for payload tests |
| tests/IntegratoR.TestKit/Doubles/Entities/TestEntity.cs | Adds composite-key entity double for generic handler tests |
| tests/IntegratoR.TestKit/Builders/TestEntityBuilder.cs | Adds fluent builder for TestEntity |
| tests/IntegratoR.TestKit/Assertions/ResultAssertionsT.cs | Adds custom FluentAssertions for Result<T> |
| tests/IntegratoR.TestKit/Assertions/ResultAssertions.cs | Adds custom FluentAssertions for Result |
| tests/IntegratoR.TestKit/Assertions/ResultAssertionExtensions.cs | Adds .Should() extension bindings for Result assertions |
| tests/IntegratoR.TestKit.Tests/TestKitSmokeTests.cs | Smoke tests to validate TestKit helpers behave as expected |
| tests/IntegratoR.TestKit.Tests/IntegratoR.TestKit.Tests.csproj | Adds TestKit smoke test project |
| tests/IntegratoR.RELion.Tests/IntegratoR.RELion.Tests.csproj | Adds RELion test project |
| tests/IntegratoR.RELion.Tests/Features/Queries/Ledger/GetLedgerAccountMapping/GetRelionLedgerAccountMappingQueryTests.cs | Tests RELion query record cache/logging behavior |
| tests/IntegratoR.RELion.Tests/Features/Queries/Ledger/GetLedgerAccountMapping/GetRelionLedgerAccountMappingHandlerTests.cs | Tests RELion handler delegation and result propagation |
| tests/IntegratoR.RELion.Tests/Domain/DTOs/RelionDtoSerializationTests.cs | Tests RELion DTO/model Newtonsoft.Json round-trips |
| tests/IntegratoR.RELion.Tests/Common/Extensions/ApplicationDependencyInjectionTests.cs | Tests RELion DI registrations and named client |
| tests/IntegratoR.RELion.Tests/Common/Authentication/RelionAuthenticationHandlerTests.cs | Tests RELion auth handler OAuth/API-key modes |
| tests/IntegratoR.OData.Tests/IntegratoR.OData.Tests.csproj | Adds OData test project |
| tests/IntegratoR.OData.Tests/Common/Services/ODataMetadataProviderTests.cs | Tests OData metadata file loading/sanitization/caching |
| tests/IntegratoR.OData.Tests/Common/Services/ODataExceptionHandlerTests.cs | Tests OData exception mapping and retry behavior |
| tests/IntegratoR.OData.Tests/Common/Extensions/ApplicationDependencyInjectionTests.cs | Tests OData DI bindings and registrations |
| tests/IntegratoR.OData.Tests/Common/Authentication/ODataAuthenticationHandlerTests.cs | Tests OData auth handler OAuth/API-key/header behaviors |
| tests/IntegratoR.OData.FO.Tests/IntegratoR.OData.FO.Tests.csproj | Adds OData.FO test project |
| tests/IntegratoR.OData.FO.Tests/Features/Queries/Dimensions/GetDimensionOrder/GetDimensionOrdersQueryValidatorTests.cs | Tests FO query validator rules |
| tests/IntegratoR.OData.FO.Tests/Features/Queries/Dimensions/GetDimensionOrder/GetDimensionOrdersQueryTests.cs | Tests FO query cache key/duration/logging context |
| tests/IntegratoR.OData.FO.Tests/Features/Queries/Dimensions/GetDimensionOrder/GetDimensionOrdersQueryHandlerTests.cs | Tests FO handler success/failure/edge cases |
| tests/IntegratoR.OData.FO.Tests/Features/Commands/LedgerJournals/UpdateLedgerJournalLine/UpdateLedgerJournalLineHandlerTests.cs | Tests FO update-line handlers (single + batch) |
| tests/IntegratoR.OData.FO.Tests/Features/Commands/LedgerJournals/UpdateLedgerJournalHeader/UpdateLedgerJournalHeaderHandlerTests.cs | Tests FO update-header handlers (single + batch) |
| tests/IntegratoR.OData.FO.Tests/Features/Commands/LedgerJournals/CreateLedgerJournalLine/CreateLedgerJournalLineHandlerTests.cs | Tests FO create-line handlers (single + batch) |
| tests/IntegratoR.OData.FO.Tests/Features/Commands/LedgerJournals/CreateLedgerJournalHeader/CreateLedgerJournalHeaderHandlerTests.cs | Tests FO create-header handlers (single + batch) |
| tests/IntegratoR.OData.FO.Tests/Features/Commands/LedgerJournals/CommandLoggingContextTests.cs | Tests FO command logging context outputs |
| tests/IntegratoR.OData.FO.Tests/Domain/Entities/LedgerJournal/LedgerJournalLineTests.cs | Tests FO ledger line composite key + logging context |
| tests/IntegratoR.OData.FO.Tests/Domain/Entities/LedgerJournal/LedgerJournalHeaderTests.cs | Tests FO ledger header composite key + logging context |
| tests/IntegratoR.OData.FO.Tests/Domain/Entities/Dimensions/DimensionEntityTests.cs | Tests FO dimension entity composite keys |
| tests/IntegratoR.OData.FO.Tests/Common/Extensions/DimensionSegmentDelimiterExtensionsTests.cs | Tests delimiter enum extension behavior |
| tests/IntegratoR.OData.FO.Tests/Common/Extensions/ApplicationDependencyInjectionTests.cs | Tests FO proxy DI + settings binding + MediatR |
| tests/IntegratoR.OData.FO.Tests/Builders/FinancialDimensionBuilderTests.cs | Tests FinancialDimensionBuilder segment ordering/joining |
| tests/IntegratoR.Application.Tests/IntegratoR.Application.Tests.csproj | Adds Application test project |
| tests/IntegratoR.Application.Tests/Features/Common/Validators/ValidatorTests.cs | Tests generic validators for commands/queries |
| tests/IntegratoR.Application.Tests/Features/Common/Queries/GetByKeyQueryHandlerTests.cs | Tests GetByKey handler behaviors |
| tests/IntegratoR.Application.Tests/Features/Common/Queries/GetByFilterQueryHandlerTests.cs | Tests GetByFilter handler behaviors |
| tests/IntegratoR.Application.Tests/Features/Common/Commands/UpdateCommandHandlerTests.cs | Tests Update handler behaviors |
| tests/IntegratoR.Application.Tests/Features/Common/Commands/DeleteCommandHandlerTests.cs | Tests Delete handler behaviors |
| tests/IntegratoR.Application.Tests/Features/Common/Commands/CreateCommandHandlerTests.cs | Tests Create handler behaviors |
| tests/IntegratoR.Application.Tests/Common/Services/InMemoryCacheServiceTests.cs | Tests in-memory cache service behaviors |
| tests/IntegratoR.Application.Tests/Common/Services/DistributedCacheServiceTests.cs | Tests distributed cache service serialization/options |
| tests/IntegratoR.Application.Tests/Common/Extensions/ApplicationDependencyInjectionTests.cs | Tests Application DI registrations and pipeline order |
| tests/IntegratoR.Application.Tests/Common/Behaviours/ValidationBehaviourTests.cs | Tests validation pipeline behavior |
| tests/IntegratoR.Application.Tests/Common/Behaviours/LoggingBehaviourTests.cs | Tests logging pipeline behavior |
| tests/IntegratoR.Application.Tests/Common/Behaviours/CachingBehaviourTests.cs | Tests caching pipeline behavior with fakes |
| tests/IntegratoR.Application.Tests/Common/Authentication/OAuthAuthenticatorTests.cs | Tests OAuth token caching behavior (plus skipped integration tests) |
| tests/IntegratoR.Abstractions.Tests/IntegratoR.Abstractions.Tests.csproj | Adds Abstractions test project |
| tests/IntegratoR.Abstractions.Tests/Domain/Entities/BaseEntityTests.cs | Tests BaseEntity reflection logging + composite key behavior |
| tests/IntegratoR.Abstractions.Tests/Common/Results/ResultJsonConverterTests.cs | Tests non-generic Result JSON converter |
| tests/IntegratoR.Abstractions.Tests/Common/Results/ResultJsonConverterGenericTests.cs | Tests generic Result JSON converter |
| tests/IntegratoR.Abstractions.Tests/Common/Results/ResultGenericJsonConverterTests.cs | Tests reflection-based generic Result converter |
| tests/IntegratoR.Abstractions.Tests/Common/Results/ResultExtensionsTests.cs | Tests ResultExtensions (GetError/Match) |
| tests/IntegratoR.Abstractions.Tests/Common/Results/IntegrationErrorTests.cs | Tests IntegrationError construction semantics |
| tests/IntegratoR.Abstractions.Tests/Common/CQRS/Queries/CqrsQueryRecordTests.cs | Tests CQRS query record logging context |
| tests/IntegratoR.Abstractions.Tests/Common/CQRS/Commands/CqrsCommandRecordTests.cs | Tests CQRS command record logging context |
| IntegratoR.OData/IntegratoR.OData.csproj | Exposes internals to OData test project |
| Directory.Packages.props | Adds centrally-managed test package versions |
| .pip-boy/quests/test-suite/quest.md | Adds quest definition for test-suite |
| .pip-boy/quests/test-suite/missions/odata/mission.md | Adds detailed OData testing mission plan |
| .pip-boy/quests/test-suite/missions/abstractions/mission.md | Adds detailed Abstractions testing mission plan |
| .pip-boy/index.json | Adds Pip-Boy quest/mission index tracking progress |
| .claude/agent-memory/pip-boy-vault-dweller/MEMORY.md | Adds/updates internal workflow notes for the quest/test setup |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
tests/IntegratoR.Application.Tests/Features/Common/Validators/ValidatorTests.cs
Show resolved
Hide resolved
tests/IntegratoR.Application.Tests/Features/Common/Validators/ValidatorTests.cs
Show resolved
Hide resolved
tests/IntegratoR.Application.Tests/Features/Common/Validators/ValidatorTests.cs
Show resolved
Hide resolved
tests/IntegratoR.Application.Tests/Features/Common/Validators/ValidatorTests.cs
Show resolved
Hide resolved
tests/IntegratoR.Application.Tests/Common/Extensions/ApplicationDependencyInjectionTests.cs
Outdated
Show resolved
Hide resolved
Run `dotnet format` to fix CHARSET (BOM encoding) and FINALNEWLINE issues across all source and test files. These were pre-existing formatting violations that caused the CI formatting check to fail. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CascadeMode.Stop to batch validators and GetByKeyQueryValidator to prevent NullReferenceException when null is passed (FluentValidation 12 does not short-circuit by default). Update corresponding tests to assert validation errors instead of exceptions. Add null guards to ResultAssertions and ResultAssertions<T>. Fix unresolved cref in TestCacheableQuery. Replace no-op assertion in DI registration test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 194 out of 194 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 194 out of 194 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Quest: test-suite
Priority: high
Missions
Completed: 6/6