Namespace Serenity.Achievements.Tests.Application
Classes
AchievementServiceConcurrencyTests
Tests that the service's mutation gate actually serializes overlapping calls. Every one of these fails without it, because each mutation is a check-then-act sequence that spans an await: the second caller reads the state the first one has not written back yet.
AchievementServiceDegradationTests
Tests for what the service does when its collaborators misbehave: a store that throws, a platform that cannot answer, a storefront SDK that never returns, and a reset that lands while a screenshot capture is still in flight. Nothing here may surface as an exception to the gameplay code that triggered the unlock.
AchievementServiceTests
Behavioral tests for AchievementService over an in-memory store and a scriptable platform gateway: unlock idempotency, the points mirror, hidden visibility, progress clamping and auto-unlock, platform push throttling, reconciliation in both directions, the detached screenshot attachment, and reset.
CompositeAchievementPlatformGatewayTests
Behavioral tests for CompositeAchievementPlatformGateway: the union query, the any-child availability rule, and the contract that one broken storefront SDK never takes the unlock path or the other platforms down with it.