Skip to content

feat(test-suite): test-suite#27

Merged
Mikeoso merged 21 commits intomainfrom
pip-boy/test-suite/integration
Feb 18, 2026
Merged

feat(test-suite): test-suite#27
Mikeoso merged 21 commits intomainfrom
pip-boy/test-suite/integration

Conversation

@Mikeoso
Copy link
Owner

@Mikeoso Mikeoso commented Feb 18, 2026

Quest: test-suite

Priority: high

Missions

  • abstractions -- Abstractions Tests (M)
  • application -- Application Tests (L)
  • odata -- OData Tests (L)
  • odata-fo -- OData.FO Tests (M)
  • relion -- RELion Tests (L)
  • testkit -- TestKit Foundation (L)

Completed: 6/6

Mikeoso and others added 19 commits February 18, 2026 17:02
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>
Copilot AI review requested due to automatic review settings February 18, 2026 21:12
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Mikeoso and others added 2 commits February 18, 2026 22:28
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>
Copilot AI review requested due to automatic review settings February 18, 2026 21:54
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Mikeoso Mikeoso merged commit 3d6a81b into main Feb 18, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants