Align squad model and roster guidance#25
Merged
GitHub Actions / Test Results
succeeded
Apr 19, 2026 in 0s
81 passed, 0 failed and 0 skipped
| Report | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| test-results/architecture/architecture-tests.trx | 6✅ | 2s | ||
| test-results/integration/integration-tests.trx | 9✅ | 16s | ||
| test-results/unit/unit-tests.trx | 66✅ | 3s |
✅ test-results/architecture/architecture-tests.trx
6 tests were completed in 2s with 6 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| MyBlog.Architecture.Tests.DomainLayerTests | 3✅ | 106ms | ||
| MyBlog.Architecture.Tests.VsaLayerTests | 3✅ | 123ms |
✅ MyBlog.Architecture.Tests.DomainLayerTests
✅ Domain_Entities_Should_Be_Sealed
✅ Domain_Should_Not_Have_InMemoryRepository
✅ Domain_Should_Not_Reference_Web
✅ MyBlog.Architecture.Tests.VsaLayerTests
✅ Data_Layer_Should_Not_Be_Referenced_Outside_Web
✅ Features_Should_Not_Reference_Each_Other
✅ Handlers_Should_HaveNameEndingWithHandler_And_BeSealed
✅ test-results/integration/integration-tests.trx
9 tests were completed in 16s with 9 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| MyBlog.Integration.Tests.BlogPosts.MongoDbBlogPostRepositoryTests | 9✅ | 2s |
✅ MyBlog.Integration.Tests.BlogPosts.MongoDbBlogPostRepositoryTests
✅ AddAsync persists post to MongoDB
✅ DeleteAsync does nothing when post not found
✅ DeleteAsync removes post from MongoDB
✅ GetAllAsync returns empty when no posts exist
✅ GetAllAsync returns posts ordered by newest first
✅ GetByIdAsync returns null when not found
✅ GetByIdAsync returns post when found
✅ UpdateAsync modifies post in MongoDB
✅ UpdateAsync throws when version conflicts with concurrent update
✅ test-results/unit/unit-tests.trx
66 tests were completed in 3s with 66 passed, 0 failed and 0 skipped.
| Test suite | Passed | Failed | Skipped | Time |
|---|---|---|---|---|
| MyBlog.Unit.Tests.BlogPostTests | 7✅ | 11ms | ||
| MyBlog.Unit.Tests.Components.Layout.NavMenuTests | 4✅ | 426ms | ||
| MyBlog.Unit.Tests.Components.RazorSmokeTests | 18✅ | 978ms | ||
| MyBlog.Unit.Tests.Features.UserManagement.ProfileTests | 2✅ | 244ms | ||
| MyBlog.Unit.Tests.Handlers.CreateBlogPostHandlerTests | 2✅ | 66ms | ||
| MyBlog.Unit.Tests.Handlers.DeleteBlogPostHandlerTests | 3✅ | 7ms | ||
| MyBlog.Unit.Tests.Handlers.EditBlogPostHandlerTests | 6✅ | 16ms | ||
| MyBlog.Unit.Tests.Handlers.GetBlogPostsHandlerTests | 4✅ | 73ms | ||
| MyBlog.Unit.Tests.ResultTests | 6✅ | 7ms | ||
| MyBlog.Unit.Tests.Security.RoleClaimsHelperTests | 14✅ | 272ms |
✅ MyBlog.Unit.Tests.BlogPostTests
✅ Create_WithBlankArgs_ThrowsArgumentException(title: "", content: "content", author: "author")
✅ Create_WithBlankArgs_ThrowsArgumentException(title: "title", content: "", author: "author")
✅ Create_WithBlankArgs_ThrowsArgumentException(title: "title", content: "content", author: "")
✅ Create_WithValidArgs_ReturnsBlogPost
✅ Publish_SetsIsPublished_True
✅ Unpublish_SetsIsPublished_False
✅ Update_ChangesTitle_AndContent
✅ MyBlog.Unit.Tests.Components.Layout.NavMenuTests
✅ AuthenticatedAdmin_UsesDisplayNameAsProfileLabel_AndShowsAdminLinks
✅ AuthenticatedUser_WithoutName_FallsBackToProfileLabel
✅ NavMenu_LoadsThemeFromJs_AndAllowsThemeInteraction
✅ UnauthenticatedUser_SeesLoginAndNoProtectedLinks
✅ MyBlog.Unit.Tests.Components.RazorSmokeTests
✅ BlogIndex_ConfirmDelete_SendsDeleteCommandAndRefreshesList
✅ BlogIndex_RendersPostsForAuthorizedUser_AndCanOpenDeleteDialog
✅ BlogIndex_ShowsConcurrencyWarning_WhenDeleteFailsWithConcurrency
✅ BlogIndex_ShowsEmptyState_WhenNoPostsExist
✅ ConfirmDeleteDialog_ShowsDialog_WhenVisible
✅ CreatePost_RendersForm
✅ CreatePost_SubmitsAndNavigatesToBlog_WhenCommandSucceeds
✅ EditPost_LoadsExistingPost
✅ EditPost_ShowsConcurrencyMessage_WhenSaveFailsWithConcurrency
✅ EditPost_SubmitsAndNavigatesToBlog_WhenSaveSucceeds
✅ Error_UsesCascadingHttpContextTraceIdentifier
✅ Home_RendersWelcomeMessage
✅ MainLayout_RendersMainContentTargetAndFooter
✅ ManageRoles_AssignButton_SendsCommandAndRefreshesUsers
✅ ManageRoles_RemoveButton_SendsCommandAndRefreshesUsers
✅ ManageRoles_RendersUsersAndAvailableRoles
✅ NotFound_RendersNotFoundMessage
✅ RedirectToLogin_NavigatesToLoginWithReturnUrl
✅ MyBlog.Unit.Tests.Features.UserManagement.ProfileTests
✅ Profile_RendersIdentityDetailsRolesPictureAndClaims
✅ Profile_UsesFallbackValues_WhenOptionalClaimsAreMissing
✅ MyBlog.Unit.Tests.Handlers.CreateBlogPostHandlerTests
✅ Handle_RepoThrows_ReturnsFailResult
✅ Handle_Success_CreatesPostInvalidatesCacheAndReturnsGuid
✅ MyBlog.Unit.Tests.Handlers.DeleteBlogPostHandlerTests
✅ Handle_ConcurrentDelete_ReturnsConcurrencyErrorCode
✅ Handle_RepoThrows_ReturnsFailResult
✅ Handle_Success_DeletesAndInvalidatesBothCaches
✅ MyBlog.Unit.Tests.Handlers.EditBlogPostHandlerTests
✅ HandleEdit_ConcurrentUpdate_ReturnsConcurrencyErrorCode
✅ HandleEdit_NotFound_ReturnsFailResult
✅ HandleEdit_Success_UpdatesPostAndInvalidatesBothCaches
✅ HandleGetById_CacheMissRepoReturnsNull_ReturnsOkWithNull
✅ HandleGetById_CacheMissRepoReturnsPost_MapsToDtoAndCachesBoth
✅ HandleGetById_L1CacheHit_ReturnsCachedDtoWithoutRepo
✅ MyBlog.Unit.Tests.Handlers.GetBlogPostsHandlerTests
✅ Handle_CacheMiss_CallsRepoAndPopulatesBothCaches
✅ Handle_L1CacheHit_ReturnsCachedDataWithoutCallingRepo
✅ Handle_L2CacheHit_DeserializesAndPopulatesL1
✅ Handle_RepoThrows_ReturnsFailResult
✅ MyBlog.Unit.Tests.ResultTests
✅ Fail_CreatesFailedNonGenericResultWithCodeAndDetails
✅ FromValue_ReturnsFailedResultWhenValueIsNull
✅ GenericFail_CreatesFailedResultWithCode
✅ GenericOk_CarriesValue
✅ ImplicitConversions_WorkForGenericResult
✅ Ok_CreatesSuccessfulNonGenericResult
✅ MyBlog.Unit.Tests.Security.RoleClaimsHelperTests
✅ AddRoleClaims_AddsExpandedRoleClaimsWithoutDuplicates
✅ AddRoleClaims_InfersNamespacedRoleClaims_WhenConfiguredTypesDoNotMatch
✅ ExpandRoleValues_ParsesSupportedFormats(input: " [\"Admin\",\"Author\"] ", expected: ["Admin", "Author"])
✅ ExpandRoleValues_ParsesSupportedFormats(input: "Admin,Author", expected: ["Admin", "Author"])
✅ ExpandRoleValues_ParsesSupportedFormats(input: "Admin", expected: ["Admin"])
✅ GetRoleClaimTypes_ReturnsDefaults_WhenConfigurationIsMissing
✅ GetRoleClaimTypes_UsesConfiguredDistinctValues_WhenPresent
✅ GetRoles_CollectsDistinctRolesAcrossMultipleClaimTypes
✅ GetRoles_IncludesNamespacedRoleClaims_WhenRoleClaimTypeWasNotConfigured
✅ IsRoleClaimType_DetectsExpectedClaimTypes(claimType: "http://schemas.microsoft.com/ws/2008/06/identity/c"···, expected: True)
✅ IsRoleClaimType_DetectsExpectedClaimTypes(claimType: "https://articlesite.com/app_metadata", expected: False)
✅ IsRoleClaimType_DetectsExpectedClaimTypes(claimType: "https://articlesite.com/roles", expected: True)
✅ IsRoleClaimType_DetectsExpectedClaimTypes(claimType: "role", expected: True)
✅ IsRoleClaimType_DetectsExpectedClaimTypes(claimType: "roles", expected: True)
Loading