Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dressca.WebにWeb系の共通部品を集約する #2012

Merged

Conversation

KentaHizume
Copy link
Contributor

@KentaHizume KentaHizume commented Nov 13, 2024

この Pull request で実施したこと

  • 1ソリューションで複数のWebアプリケーションを開発することに備えて、Webアプリケーションの共通部品を配置するためのプロジェクトDressaca.Webおよびその単体テストプロジェクトDressca.UnitTests.Webを新規作成しました。
  • 共通部品である業務例外フィルターと、未処理例外のコントローラーをWeb.ConsumerからWebに移動し、参照を更新しました。
    • ErrorControllerのルートパス(定数値)に別プロジェクトからアクセスするためのプロパティを実装しました。
  • 不要になったDressca.Web.Consumer配下の業務例外フィルターと未処理例外のコントローラーを削除しました。
  • Dressca.WebおよびDressca.UnitTests.WebをConsumerのソリューションフィルターに追加しました。
  • イベントIDのXMLコメントを敬体に変更しました。

モチベーション

確認ポイント

  • デバッグ実行で業務エラーを発生させ、移動したDressca.Web.Runtimeの例外フィルターでハンドリングされることを確認しました。
info: Dressca.Web.Runtime.BusinessExceptionDevelopmentFilter[1]
      業務エラーが発生しました。
      Dressca.ApplicationCore.Ordering.NullBasketOnCheckoutException: 業務例外が発生しました。
      [{"NullBasketOnCheckout":["注文のチェックアウト処理開始時、買い物かごが存在しませんでした。"]}]
  • Errorコントローラーからレスポンスが返却されることを確認しました。
$ curl https://localhost:5001/error-development
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   201    0   201    0     0    717      0 --:--:-- --:--:-- --:--:--   717{"type":"https://tools.ietf.org/html/rfc9110#section-15.6.1","title":"An error occurred while processing your request.","status":500,"traceId":"00-f8cc6291aad2e904d369319054fce176-ab35d16739ef14fe-00"}
  • ConsumerのソリューションフィルターにDressca.WebおよびDressca.UnitTests.Webが含まれていることを確認しました。

この Pull request では実施していないこと

レビュー時に検出されたXMLコメントの文体の統一については別issueで実施します。

Issues や Discussions 、関連する Web サイトなどへのリンク

クラスライブラリ形式のプロジェクトから、ASP.NET Core 共有フレームワークを参照する際の設定方法は下記になります。

https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/target-aspnetcore?view=aspnetcore-8.0&tabs=visual-studio

@KentaHizume KentaHizume linked an issue Nov 13, 2024 that may be closed by this pull request
2 tasks
@KentaHizume KentaHizume self-assigned this Nov 13, 2024
@KentaHizume KentaHizume added the target: Dressca サンプルアプリケーションDresscaに関係がある label Nov 13, 2024
@KentaHizume KentaHizume added this to the v1.0.0 milestone Nov 13, 2024
Copy link
Contributor

@tsuna-can-se tsuna-can-se left a comment

Choose a reason for hiding this comment

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

XMLコメント内では英語と日本語の間に半角スペースを置くように全体的にしているみたいなので、気づいた範囲でコメント入れました。
絶対にそろってなければならないわけではないので、気づいたところを修正してもらえればと思います。

Copy link

Test Result 📝

Test was a success.
Completed in 37142ms with 209 passed, 0 failed and 0 skipped.

Coverage 📐

Summary
Generated on: 11/14/2024 - 08:26:15
Coverage date: 11/14/2024 - 08:25:53 - 11/14/2024 - 08:26:11
Parser: MultiReport (6x Cobertura)
Assemblies: 8
Classes: 122
Files: 121
Line coverage: 32.3% (1546 of 4782)
Covered lines: 1546
Uncovered lines: 3236
Coverable lines: 4782
Total lines: 9680
Branch coverage: 50.5% (202 of 400)
Covered branches: 202
Total branches: 400
Method coverage: Feature is only available for sponsors
Tag: 20_11833352714
Dressca.ApplicationCore - 91%
Name Line Branch
Dressca.ApplicationCore 91% 76.3%
Dressca.ApplicationCore.Accounting.Account 100% 100%
Dressca.ApplicationCore.Accounting.AccountItem 100%
Dressca.ApplicationCore.ApplicationCoreServicesExtensions 100%
Dressca.ApplicationCore.ApplicationService.AssetApplicationService 100% 70%
Dressca.ApplicationCore.ApplicationService.CatalogApplicationService 100% 50%
Dressca.ApplicationCore.ApplicationService.OrderApplicationService 100% 75%
Dressca.ApplicationCore.ApplicationService.ShoppingApplicationService 100% 78.5%
Dressca.ApplicationCore.ApplicationService.TransactionScopeManager 100% 100%
Dressca.ApplicationCore.Assets.Asset 94.4% 100%
Dressca.ApplicationCore.Assets.AssetNotFoundException 100%
Dressca.ApplicationCore.Assets.AssetTypes 100% 100%
Dressca.ApplicationCore.Baskets.Basket 100% 100%
Dressca.ApplicationCore.Baskets.BasketItem 84.2% 75%
Dressca.ApplicationCore.Baskets.CatalogItemNotExistingInBasketException 100%
Dressca.ApplicationCore.Catalog.CatalogBrand 84.6% 100%
Dressca.ApplicationCore.Catalog.CatalogCategory 84.6% 100%
Dressca.ApplicationCore.Catalog.CatalogDomainService 100% 66.6%
Dressca.ApplicationCore.Catalog.CatalogItem 54% 37.5%
Dressca.ApplicationCore.Catalog.CatalogItemAsset 92.8% 75%
Dressca.ApplicationCore.Catalog.CatalogItemNotExistingInRepositoryException 100%
Dressca.ApplicationCore.Events 100%
Dressca.ApplicationCore.Ordering.Address 100% 100%
Dressca.ApplicationCore.Ordering.CatalogItemOrdered 100% 100%
Dressca.ApplicationCore.Ordering.EmptyBasketOnCheckoutException 100%
Dressca.ApplicationCore.Ordering.NullBasketOnCheckoutException 100%
Dressca.ApplicationCore.Ordering.Order 100% 87.5%
Dressca.ApplicationCore.Ordering.OrderFactory 100%
Dressca.ApplicationCore.Ordering.OrderItem 88.2% 25%
Dressca.ApplicationCore.Ordering.OrderItemAsset 85.7% 75%
Dressca.ApplicationCore.Ordering.OrderNotFoundException 100%
Dressca.ApplicationCore.Ordering.ShipTo 100% 75%
Dressca.ApplicationCore.Resources.LogMessages 88.8% 100%
Dressca.ApplicationCore.Resources.Messages 71.6% 100%
Dressca.EfInfrastructure - 12%
Name Line Branch
Dressca.EfInfrastructure 12% 31.8%
Dressca.EfInfrastructure.Configurations.Assets.AssetConfiguration 100%
Dressca.EfInfrastructure.Configurations.Baskets.BasketConfiguration 100%
Dressca.EfInfrastructure.Configurations.Baskets.BasketItemConfiguration 100%
Dressca.EfInfrastructure.Configurations.Catalog.CatalogBrandConfiguration 100%
Dressca.EfInfrastructure.Configurations.Catalog.CatalogCategoryConfiguratio
n
100%
Dressca.EfInfrastructure.Configurations.Catalog.CatalogItemAssetConfigurati
on
100%
Dressca.EfInfrastructure.Configurations.Catalog.CatalogItemConfiguration 100%
Dressca.EfInfrastructure.Configurations.Ordering.OrderConfiguration 100%
Dressca.EfInfrastructure.Configurations.Ordering.OrderItemAssetConfiguratio
n
100%
Dressca.EfInfrastructure.Configurations.Ordering.OrderItemConfiguration 100%
Dressca.EfInfrastructure.DresscaDbContext 83.7% 50%
Dressca.EfInfrastructure.EfAssetRepository 0% 0%
Dressca.EfInfrastructure.EfBasketRepository 69.6% 50%
Dressca.EfInfrastructure.EfCatalogBrandRepository 0% 0%
Dressca.EfInfrastructure.EfCatalogCategoryRepository 0% 0%
Dressca.EfInfrastructure.EfCatalogRepository 92.3% 50%
Dressca.EfInfrastructure.EfInfrastructureServicesExtension 81.8% 50%
Dressca.EfInfrastructure.EfOrderRepository 100% 50%
Dressca.EfInfrastructure.Events 0%
Dressca.EfInfrastructure.HealthChecksBuilderExtensions 60%
Dressca.EfInfrastructure.Migrations.AddNowPrintingAsset 0%
Dressca.EfInfrastructure.Migrations.DresscaDbContextModelSnapshot 0%
Dressca.EfInfrastructure.Migrations.InitialCreate 0%
Dressca.EfInfrastructure.Resources.Messages 0% 0%
Dressca.Store.Assets.StaticFiles - 9.4%
Name Line Branch
Dressca.Store.Assets.StaticFiles 9.4% 0%
Dressca.Store.Assets.StaticFiles.Events 0%
Dressca.Store.Assets.StaticFiles.Resources.LogMessages 0% 0%
Dressca.Store.Assets.StaticFiles.StaticFileAssetStore 0% 0%
Dressca.Store.Assets.StaticFiles.StaticFileAssetStoreServicesExtension 100%
Dressca.SystemCommon - 88.3%
Name Line Branch
Dressca.SystemCommon 88.3% 90.9%
Dressca.SystemCommon.BusinessError 100% 83.3%
Dressca.SystemCommon.BusinessErrorCollection 88.8% 100%
Dressca.SystemCommon.BusinessException 93.7% 100%
Dressca.SystemCommon.ObjectExtensions 100% 50%
Dressca.SystemCommon.Resources.Messages 55.5% 100%
Dressca.SystemCommon.Text.Json.DefaultJsonSerializerOptions 100%
Dressca.Web - 71.6%
Name Line Branch
Dressca.Web 71.6% 50%
Dressca.Web.Controllers.ErrorController 8.3% 0%
Dressca.Web.Events 100%
Dressca.Web.Resources.Messages 55.5% 100%
Dressca.Web.Runtime.BusinessExceptionDevelopmentFilter 100% 50%
Dressca.Web.Runtime.BusinessExceptionFilter 100% 50%
Dressca.Web.Runtime.BusinessExceptionFilterBase 100% 83.3%
Dressca.Web.Consumer - 38.4%
Name Line Branch
Dressca.Web.Consumer 38.4% 24.3%
__OptionValidationGeneratedAttributes 0% 0%
__OptionValidationStaticInstances 0%
Dressca.Web.Consumer.Assets.AssetExtensions 87.5% 50%
Dressca.Web.Consumer.Baskets.BuyerIdFilterAttribute 96.5% 58.3%
Dressca.Web.Consumer.Baskets.HttpContextExtensions 100% 100%
Dressca.Web.Consumer.Configuration.CookieSettingsValidator 0% 0%
Dressca.Web.Consumer.Configuration.CookieSettings 100% 100%
Dressca.Web.Consumer.Configuration.ValidateWebServerOptions 0% 0%
Dressca.Web.Consumer.Configuration.WebServerOptions 100%
Dressca.Web.Consumer.Controllers.ActionNameHelper 75% 50%
Dressca.Web.Consumer.Controllers.ApiModel.FindCatalogItemsQuery 0%
Dressca.Web.Consumer.Controllers.AssetsController 0% 0%
Dressca.Web.Consumer.Controllers.BasketItemsController 34.3% 37.5%
Dressca.Web.Consumer.Controllers.CatalogBrandsController 0% 0%
Dressca.Web.Consumer.Controllers.CatalogCategoriesController 0% 0%
Dressca.Web.Consumer.Controllers.CatalogItemsController 0% 0%
Dressca.Web.Consumer.Controllers.OrdersController 88.2% 50%
Dressca.Web.Consumer.Events 0%
Dressca.Web.Consumer.HealthChecks.HealthCheckDescriptionProvider 7.8% 25%
Dressca.Web.Consumer.Mapper.BasketItemMapper 0% 0%
Dressca.Web.Consumer.Mapper.BasketMapper 9.5% 25%
Dressca.Web.Consumer.Mapper.CatalogBrandMapper 0% 0%
Dressca.Web.Consumer.Mapper.CatalogCategoryMapper 0% 0%
Dressca.Web.Consumer.Mapper.CatalogItemMapper 0% 0%
Dressca.Web.Consumer.Mapper.CatalogItemSummaryResponseMapper 0% 0%
Dressca.Web.Consumer.Mapper.DtoMapperServicesExtension 100%
Dressca.Web.Consumer.Mapper.OrderMapper 95.1% 50%
Dressca.Web.Consumer.Resources.LogMessages 0% 0%
Dressca.Web.Consumer.Resources.Messages 0% 0%
Program 80.8% 75%
Dressca.Web.Consumer.Dto - 45.5%
Name Line Branch
Dressca.Web.Consumer.Dto 45.5% 0%
Dressca.Web.Consumer.Dto.Accounting.AccountResponse 100%
Dressca.Web.Consumer.Dto.Baskets.BasketItemResponse 0%
Dressca.Web.Consumer.Dto.Baskets.BasketResponse 0%
Dressca.Web.Consumer.Dto.Baskets.PostBasketItemsRequest 100%
Dressca.Web.Consumer.Dto.Baskets.PutBasketItemsRequest 0%
Dressca.Web.Consumer.Dto.Catalog.CatalogBrandResponse 0%
Dressca.Web.Consumer.Dto.Catalog.CatalogCategoryResponse 0%
Dressca.Web.Consumer.Dto.Catalog.CatalogItemResponse 0%
Dressca.Web.Consumer.Dto.Catalog.CatalogItemSummaryResponse 100%
Dressca.Web.Consumer.Dto.Ordering.OrderItemResponse 100%
Dressca.Web.Consumer.Dto.Ordering.OrderResponse 100%
Dressca.Web.Consumer.Dto.Ordering.PostOrderRequest 100%
Dressca.Web.Consumer.Dto.PagedList`1 0% 0%
Maris.Logging.Testing - 94.2%
Name Line Branch
Maris.Logging.Testing 94.2% 100%
Maris.Logging.Testing.Xunit.TestLoggerManager 100% 100%
Maris.Logging.Testing.Xunit.XunitLogger 76.4% 100%
Maris.Logging.Testing.Xunit.XunitLoggerProvider 100% 100%
Microsoft.Extensions.DependencyInjection.TestLoggerServiceCollectionExtensi
ons
100%
Microsoft.Extensions.Logging.FakeLoggingBuilderExtensions 100%
Microsoft.Extensions.Logging.XunitLoggingBuilderExtensions 100%

@KentaHizume
Copy link
Contributor Author

XMLコメント内では英語と日本語の間に半角スペースを置くように全体的にしているみたいなので、気づいた範囲でコメント入れました。 絶対にそろってなければならないわけではないので、気づいたところを修正してもらえればと思います。

@tsuna-can-se
ご指摘いただいた点について修正いたしました。
簡単に自動化できないか調査したのですが、
StyleCopAnalyzersのカスタムルールを実装して、
そのdllを参照またはNugetパッケージとして使用するという方法しか見つけられず、
自動化については対応を見送りました。

@tsuna-can-se tsuna-can-se merged commit e892e13 into main Nov 14, 2024
3 checks passed
@tsuna-can-se tsuna-can-se deleted the feature/Dressca.WebにWeb系の共通部品を集約する branch November 14, 2024 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
target: Dressca サンプルアプリケーションDresscaに関係がある
Projects
None yet
Development

Successfully merging this pull request may close these issues.

バックエンドのWeb系の共通部品をDressca.Webに移植する
2 participants