-
Notifications
You must be signed in to change notification settings - Fork 123
Upgrade OpenApiGenerator to v7.16.0 to generate new .NET models/services to support allOf/type, System.Text.Json #1204
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
Open
Kwok-he-Chu
wants to merge
126
commits into
main
Choose a base branch
from
v7-generichost
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 76 commits
Commits
Show all changes
126 commits
Select commit
Hold shift + click to select a range
747519b
Include templates
Kwok-he-Chu 15053de
Rename Client to AdyenClient
Kwok-he-Chu a38fcaf
TODO: revertt
Kwok-he-Chu 6cee7ab
Add NullCondition mustache templates
Kwok-he-Chu 8859590
Fix csproj
Kwok-he-Chu 5a98a11
No template/v7
Kwok-he-Chu 2bc4da1
add custom templates for backwards compatibility test
Kwok-he-Chu 0aba8ef
Fix templates, no longer throw if required
Kwok-he-Chu 69305f6
Add JsonSubtypes
Kwok-he-Chu 30c22e1
OAuth & DOCS
Kwok-he-Chu 221647d
templates move
Kwok-he-Chu 09c1d19
Copied Client classes from other branch
Kwok-he-Chu 10e8d5c
Removed unused templates
Kwok-he-Chu c3c319d
remove template
Kwok-he-Chu 6b017a1
Alter templates from other branch
Kwok-he-Chu 01cc9cd
Added client files
Kwok-he-Chu 0317327
Add dependencies: Microsoft.Extension.Hosting & Polly.Extensions.Http
Kwok-he-Chu f75e894
fix templates
Kwok-he-Chu 0c09953
Remove IAPI
Kwok-he-Chu 40e6cb6
Revert models
Kwok-he-Chu 5899fa8
Move everything to /src
Kwok-he-Chu 8b999dc
Add IAPI parent service
Kwok-he-Chu 4622fb5
Add obsolete tags with deprecation information
Kwok-he-Chu 6fec826
Remove BasicToken support
Kwok-he-Chu 0a5590d
Add Checkout.oneOf serialization support
Kwok-he-Chu f7ca01e
Commented out CheckoutPaymentMethod support oneOf
Kwok-he-Chu 76b20a5
Move custom template to support oneOf without mapping/ref
Kwok-he-Chu b7e71f7
Move CheckoutTest to integration tests in its own folder
Kwok-he-Chu e906719
Fix templates to use "Core" as the common namespace name
Kwok-he-Chu be5ecdb
Rename coreName to corePackageName for consistency
Kwok-he-Chu a6a7eaa
Write enum
Kwok-he-Chu ce2fabc
Remove old templates
Kwok-he-Chu f067c06
Move from /src to root
Kwok-he-Chu c627456
Rename localVars
Kwok-he-Chu ebbc08a
Rename integration-test
Kwok-he-Chu ca807eb
Add newline on service-level
Kwok-he-Chu 32ad1ed
Add {{corePackageName}} in template to match folder structure
Kwok-he-Chu c3293f5
Added utility function to support inQueryEmbedding for f.e. clientKeys
Kwok-he-Chu 954477a
Update mustache templates to support multifolder setups
Kwok-he-Chu 18bce42
Update check on adding JsonConverters
Kwok-he-Chu eaf7464
Add support for JsonSerializerOptionsProvider per service
Kwok-he-Chu e1e1d08
Use TryDeserializeResponse
Kwok-he-Chu 46ab0e6
Move original library to /src for easier debugging and cleaning up
Kwok-he-Chu 83ae167
Use TryDeserializeHttpResponse name
Kwok-he-Chu 0af5803
Add NotFound and Accepted responses
Kwok-he-Chu 99c84ea
Fix recurring tests
Kwok-he-Chu 5684681
Add AcsWebhooksTest
Kwok-he-Chu 4a0ba61
Added support for Test and Live configuration
Kwok-he-Chu fde6991
Update templates
Kwok-he-Chu 1ad8638
Remove rate-limiting functionality
Kwok-he-Chu c47fcee
Remove RateLimiting
Kwok-he-Chu 8c2fee7
Remove unused templates
Kwok-he-Chu 1958912
Update partial_header.mustache
Kwok-he-Chu 5614205
Added 1-line configuration support for configuration an environment, …
Kwok-he-Chu 3cd02b5
Revert "Added 1-line configuration support for configuration an envir…
Kwok-he-Chu 1129c30
Reapply "Added 1-line configuration support for configuration an envi…
Kwok-he-Chu 8cb6732
Added 1-line configuration support for configuration an environment, …
Kwok-he-Chu 6e2e6c9
Remove ApiKeyToken as these are generated
Kwok-he-Chu 4372809
Update mustache template with the Adyen.Core.Auth package namespace
Kwok-he-Chu 225c9d3
Use Core package
Kwok-he-Chu 3d7fe80
Fix DI for TokenProvider
Kwok-he-Chu c32ae57
Move all core tests from other branch
Kwok-he-Chu a16f88b
Modified mustache templates to use _underscore for Option<> params
Kwok-he-Chu 07a244c
Rename/move tests namespaces
Kwok-he-Chu f497990
Add ApiToken Test for multiple services
Kwok-he-Chu 9bfff8e
Rename/move Tests from other branch
Kwok-he-Chu f4a5d1f
Add TransferWebhook test
Kwok-he-Chu 4d1195b
Remove HttpResponse and headers from mustache template
Kwok-he-Chu 351a666
Add WebhookHandler/Service mustache templates
Kwok-he-Chu 1ae4b2a
Allow nullable ServiceWebhookHandler
Kwok-he-Chu bba81ea
Moved mock tests for BalancePlatform
Kwok-he-Chu 12cce6c
Move TerminalApi Tests
Kwok-he-Chu f7cc53e
Fix typo buildeAction -> builderAction
Kwok-he-Chu 5f4c61e
Modify IServiceCollection to iterate over the entire list of webhooks
Kwok-he-Chu 6e6a8b3
Added support for String Enums using the IEnum interface and deserial…
Kwok-he-Chu b4a7c24
Added TransactionRule Deserialization and Serialization tests
Kwok-he-Chu 96e5760
Move /src back to the original folder structure
Kwok-he-Chu 4d7eeeb
Move TerminalApi classes into its own folder /TerminalApi
Kwok-he-Chu dd70d99
Move ConstructHostUrl to /Core
Kwok-he-Chu 9155da6
Add ByteArrayConverter and tests
Kwok-he-Chu 622e81d
Add tests for IEnum serialization/deserialization
Kwok-he-Chu bba3bb4
Add tests for IEnum serialization/deserialization
Kwok-he-Chu a59a227
Update function name from packH to HexadecimalToBytes
Kwok-he-Chu 187d648
Update docs with usage
Kwok-he-Chu 9fa1af9
Add tests for URLs & add sessionsAuthenticationUrl Check
Kwok-he-Chu b1d9b91
Rename AdyenClient.cs back to the original Client.cs
Kwok-he-Chu 3a12eb4
Rewrite old tests to use the new models
Kwok-he-Chu 946b8e7
Update TransferWebhooksTest.cs
Kwok-he-Chu a9fc23e
Move DisputeTests
Kwok-he-Chu 41e19eb
Add DisputeTests
Kwok-he-Chu 1e95b29
Added transfer tests
Kwok-he-Chu a9beefa
Added PosMobileTests
Kwok-he-Chu d914810
Use logger override in constructor, only if none is provided, we crea…
Kwok-he-Chu c13e2c0
Moved extensions tests to respective /service endpoints
Kwok-he-Chu 2253133
Added and moved RecurringTests
Kwok-he-Chu 441e287
Added StoredValueTests
Kwok-he-Chu c15072b
Update StoredValueTests
Kwok-he-Chu 7c61072
Add PosTerminalManagement tests
Kwok-he-Chu d2a2ea0
Add Payout, PaymentsApp tests
Kwok-he-Chu 7697b25
Moved tests for PaymentsApp to ensure url is correct
Kwok-he-Chu 4ae88eb
Rename var
Kwok-he-Chu a8957b1
Allow HttpClient and timeouts to be configurable
Kwok-he-Chu 473e756
Rename variables and better guide developer to use HttpClientBuilderE…
Kwok-he-Chu 427dfa2
Renames of variables, cleanup local functions and add documentation
Kwok-he-Chu ebc79e2
Add documentation
Kwok-he-Chu a3a5368
Update Hostbuilder's documentation summary
Kwok-he-Chu 4b32873
Update IHostBuilderExtensions documentation
Kwok-he-Chu a590662
Update Hostconfiguration.mustache fix doc
Kwok-he-Chu d7c21b3
Added some extra deserialization tests from raw string
Kwok-he-Chu c7ffaf6
Add UserAgent to our HttpClient and moved tests
Kwok-he-Chu 5523699
Added examples for timeout and retry, circuitbreaker tests
Kwok-he-Chu 8405737
Moved tests for headers (UserAgent) and idempotency key tests for old…
Kwok-he-Chu 4d3b07d
Clean-up, removed functions that are overkill
Kwok-he-Chu 2c82522
Cleaned-up templates
Kwok-he-Chu 8cac881
Add documentation to Core classes
Kwok-he-Chu bf3141b
Move mock data tests
Kwok-he-Chu 8088c00
Add logging override (events) example
Kwok-he-Chu 90d64bd
Added more documentation
Kwok-he-Chu 6b8da31
nit: Use Given_When_Then in tests naming
Kwok-he-Chu 358937e
Remove RateLimiterProvider template (we use Polly instead)
Kwok-he-Chu 2971dad
Moved all CheckoutTests
Kwok-he-Chu 5b0bd17
Move all old classic payments tests to /Payment
Kwok-he-Chu 0d33bf3
Use constant from Core
Kwok-he-Chu 469ab2f
Escape {{{description}}}
Kwok-he-Chu 2ebe37c
Move to correct terminal api folder so that when /Model and /Service …
Kwok-he-Chu 9842abf
Remove ApplicationInformation, this is moved to /TerminalApi
Kwok-he-Chu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
Adyen.IntegrationTest/Checkout/PaymentsServiceIntegrationTest.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| using Adyen.Checkout.Extensions; | ||
| using Adyen.Checkout.Models; | ||
| using Adyen.Checkout.Services; | ||
| using Microsoft.Extensions.DependencyInjection; | ||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
| using Microsoft.Extensions.Hosting; | ||
| using Adyen.Core.Options; | ||
|
|
||
| namespace Adyen.IntegrationTest.Checkout | ||
| { | ||
| [TestClass] | ||
| public class PaymentsServiceIntegrationTest | ||
| { | ||
| private readonly IPaymentsService _paymentsApiService; | ||
|
|
||
| public PaymentsServiceIntegrationTest() | ||
| { | ||
| IHost host = Host.CreateDefaultBuilder() | ||
| .ConfigureCheckout((context, services, config) => | ||
| { | ||
| config.ConfigureAdyenOptions(options => | ||
| { | ||
| options.AdyenApiKey = context.Configuration["ADYEN_API_KEY"]; | ||
| options.Environment = AdyenEnvironment.Test; | ||
| }); | ||
| }) | ||
| .Build(); | ||
|
|
||
| _paymentsApiService = host.Services.GetRequiredService<IPaymentsService>(); | ||
| } | ||
|
|
||
| [TestMethod] | ||
| public async Task Given_Payments_When_CardDetails_Provided_Returns_OK() | ||
| { | ||
| // Arrange | ||
| var request = new PaymentRequest( | ||
| amount: new Amount("EUR", 1999), | ||
| merchantAccount: "HeapUnderflowECOM", | ||
| reference: "reference", | ||
| returnUrl: "https://adyen.com/", | ||
| paymentMethod: new CheckoutPaymentMethod( | ||
| new CardDetails( | ||
| type: CardDetails.TypeEnum.Scheme, | ||
| encryptedCardNumber: "test_4111111111111111", | ||
| encryptedExpiryMonth: "test_03", | ||
| encryptedExpiryYear: "test_2030", | ||
| encryptedSecurityCode: "test_737", | ||
| holderName: "John Smith" | ||
| ) | ||
| ) | ||
| ); | ||
| IPaymentsApiResponse response = await _paymentsApiService.PaymentsAsync(Guid.NewGuid().ToString(), request); | ||
|
|
||
| response.TryDeserializeOkResponse(out var result); | ||
| Assert.AreEqual(result?.MerchantReference, "reference"); | ||
| } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,14 +17,14 @@ namespace Adyen.IntegrationTest | |
| [TestClass] | ||
| public class ErrorTest : BaseTest | ||
| { | ||
| private Client _client; | ||
| private AdyenClient _adyenClient; | ||
| private static readonly string MerchantAccount = ClientConstants.MerchantAccount; | ||
| private HttpClientWrapper _httpClientWrapper; | ||
|
|
||
| [TestInitialize] | ||
| public void Init() | ||
| { | ||
| _client = CreateApiKeyTestClient(); | ||
| _adyenClient = CreateApiKeyTestClient(); | ||
| _httpClientWrapper = | ||
| new HttpClientWrapper(new Config() { Environment = Environment.Test, XApiKey = ClientConstants.Xapikey }, | ||
| new System.Net.Http.HttpClient()); | ||
|
|
@@ -33,7 +33,7 @@ public void Init() | |
| [TestMethod] | ||
| public void TestClassicPaymentErrorHandling() | ||
| { | ||
| var payments = new PaymentService(_client); | ||
| var payments = new PaymentService(_adyenClient); | ||
| var request = new PaymentRequest { | ||
| Amount = new Amount(){ | ||
| Value = 1500, | ||
|
|
@@ -49,9 +49,9 @@ public void TestClassicPaymentErrorHandling() | |
| ShopperEmail = "[email protected]", | ||
| ShopperIP = "61.294.12.12", | ||
| ShopperReference = "test-1234", | ||
| Recurring = new Recurring() | ||
| Recurring = new Model.Payment.Recurring() | ||
| { | ||
| Contract = Recurring.ContractEnum.RECURRING | ||
| Contract = Model.Payment.Recurring.ContractEnum.RECURRING | ||
| }, | ||
| ShopperInteraction = PaymentRequest.ShopperInteractionEnum.Ecommerce, | ||
| MerchantAccount = MerchantAccount | ||
|
|
@@ -69,7 +69,7 @@ public void TestClassicPaymentErrorHandling() | |
| [TestMethod] | ||
| public void TestCheckoutErrorHandling() | ||
| { | ||
| var payments = new PaymentsService(_client); | ||
| var payments = new PaymentsService(_adyenClient); | ||
| var request = new Model.Checkout.PaymentRequest { | ||
| Amount = new Model.Checkout.Amount(){ | ||
| Value = 1500, | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| using Adyen.AcsWebhooks.Extensions; | ||
| using Adyen.AcsWebhooks.Models; | ||
| using Adyen.AcsWebhooks.Client; | ||
| using Microsoft.Extensions.DependencyInjection; | ||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
| using Microsoft.Extensions.Hosting; | ||
| using System.Text.Json; | ||
|
|
||
| namespace Adyen.Test.AcsWebhooks | ||
| { | ||
| [TestClass] | ||
| public class AcsWebhooksTest | ||
| { | ||
| private readonly JsonSerializerOptionsProvider _jsonSerializerOptionsProvider; | ||
|
|
||
| public AcsWebhooksTest() | ||
| { | ||
| IHost host = Host.CreateDefaultBuilder() | ||
| .ConfigureAcsWebhooks((context, services, config) => | ||
| { | ||
| }) | ||
| .Build(); | ||
|
|
||
| _jsonSerializerOptionsProvider = host.Services.GetRequiredService<JsonSerializerOptionsProvider>(); | ||
| } | ||
|
|
||
| [TestMethod] | ||
| public async Task Deserialize_Authentication_Webhook_OOB_TRIGGER_FL_Returns_Object() | ||
| { | ||
| // Arrange | ||
| string json = @" | ||
| { | ||
| ""data"": { | ||
| ""authentication"": { | ||
| ""acsTransId"": ""6a4c1709-a42e-4c7f-96c7-1043adacfc97"", | ||
| ""challenge"": { | ||
| ""flow"": ""OOB_TRIGGER_FL"", | ||
| ""lastInteraction"": ""2022-12-22T15:49:03+01:00"" | ||
| }, | ||
| ""challengeIndicator"": ""01"", | ||
| ""createdAt"": ""2022-12-22T15:45:03+01:00"", | ||
| ""deviceChannel"": ""app"", | ||
| ""dsTransID"": ""a3b86754-444d-46ca-95a2-ada351d3f42c"", | ||
| ""exemptionIndicator"": ""lowValue"", | ||
| ""inPSD2Scope"": true, | ||
| ""messageCategory"": ""payment"", | ||
| ""messageVersion"": ""2.2.0"", | ||
| ""riskScore"": 0, | ||
| ""threeDSServerTransID"": ""6edcc246-23ee-4e94-ac5d-8ae620bea7d9"", | ||
| ""transStatus"": ""Y"", | ||
| ""type"": ""challenge"" | ||
| }, | ||
| ""balancePlatform"": ""YOUR_BALANCE_PLATFORM"", | ||
| ""id"": ""497f6eca-6276-4993-bfeb-53cbbbba6f08"", | ||
| ""paymentInstrumentId"": ""PI3227C223222B5BPCMFXD2XG"", | ||
| ""purchase"": { | ||
| ""date"": ""2022-12-22T15:49:03+01:00"", | ||
| ""merchantName"": ""MyShop"", | ||
| ""originalAmount"": { | ||
| ""currency"": ""EUR"", | ||
| ""value"": 1000 | ||
| } | ||
| }, | ||
| ""status"": ""authenticated"" | ||
| }, | ||
| ""environment"": ""test"", | ||
| ""timestamp"": ""2022-12-22T15:42:03+01:00"", | ||
| ""type"": ""balancePlatform.authentication.created"" | ||
| } | ||
| "; | ||
| // Act | ||
| AuthenticationNotificationRequest r = JsonSerializer.Deserialize<AuthenticationNotificationRequest>(json, _jsonSerializerOptionsProvider.Options); | ||
|
|
||
| // Assert | ||
| Assert.IsNotNull(r); | ||
| Assert.AreEqual(AuthenticationNotificationRequest.TypeEnum.BalancePlatformAuthenticationCreated, r.Type); | ||
| Assert.AreEqual("test", r.Environment); | ||
| Assert.AreEqual(DateTime.Parse("2022-12-22T15:42:03+01:00"), r.Timestamp); | ||
|
|
||
| Assert.IsNotNull(r.Data); | ||
| Assert.AreEqual("497f6eca-6276-4993-bfeb-53cbbbba6f08", r.Data.Id); | ||
| Assert.AreEqual("YOUR_BALANCE_PLATFORM", r.Data.BalancePlatform); | ||
| Assert.AreEqual("PI3227C223222B5BPCMFXD2XG", r.Data.PaymentInstrumentId); | ||
| Assert.AreEqual(AuthenticationNotificationData.StatusEnum.Authenticated, r.Data.Status); | ||
|
|
||
| Assert.IsNotNull(r.Data.Purchase); | ||
| Assert.AreEqual("2022-12-22T15:49:03+01:00", r.Data.Purchase.Date); | ||
| Assert.AreEqual("MyShop", r.Data.Purchase.MerchantName); | ||
| Assert.AreEqual("EUR", r.Data.Purchase.OriginalAmount.Currency); | ||
| Assert.AreEqual(1000, r.Data.Purchase.OriginalAmount.Value); | ||
|
|
||
| Assert.IsNotNull(r.Data.Authentication); | ||
| Assert.AreEqual("6a4c1709-a42e-4c7f-96c7-1043adacfc97", r.Data.Authentication.AcsTransId); | ||
| Assert.AreEqual(AuthenticationInfo.ChallengeIndicatorEnum._01, r.Data.Authentication.ChallengeIndicator); | ||
| Assert.AreEqual(DateTime.Parse("2022-12-22T15:45:03+01:00"), r.Data.Authentication.CreatedAt); | ||
| Assert.AreEqual(AuthenticationInfo.DeviceChannelEnum.App, r.Data.Authentication.DeviceChannel); | ||
| Assert.AreEqual("a3b86754-444d-46ca-95a2-ada351d3f42c", r.Data.Authentication.DsTransID); | ||
| Assert.AreEqual(AuthenticationInfo.ExemptionIndicatorEnum.LowValue, r.Data.Authentication.ExemptionIndicator); | ||
| Assert.IsTrue(r.Data.Authentication.InPSD2Scope); | ||
| Assert.AreEqual(AuthenticationInfo.MessageCategoryEnum.Payment, r.Data.Authentication.MessageCategory); | ||
| Assert.AreEqual("2.2.0", r.Data.Authentication.MessageVersion); | ||
| Assert.AreEqual(0, r.Data.Authentication.RiskScore); | ||
| Assert.AreEqual("6edcc246-23ee-4e94-ac5d-8ae620bea7d9", r.Data.Authentication.ThreeDSServerTransID); | ||
| Assert.AreEqual(AuthenticationInfo.TransStatusEnum.Y, r.Data.Authentication.TransStatus); | ||
| Assert.AreEqual(AuthenticationInfo.TypeEnum.Challenge, r.Data.Authentication.Type); | ||
|
|
||
| Assert.IsNotNull(r.Data.Authentication.Challenge); | ||
| Assert.AreEqual(ChallengeInfo.FlowEnum.OOBTRIGGERFL, r.Data.Authentication.Challenge.Flow); | ||
| Assert.AreEqual(DateTime.Parse("2022-12-22T15:49:03+01:00"), r.Data.Authentication.Challenge.LastInteraction); | ||
| } | ||
| } | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test method is marked as
async Taskbut does not use theawaitkeyword. This will cause a compiler warning and can be misleading. Since this method doesn't perform any awaitable operations, it should be changed to returnvoid.I've noticed this pattern in several other new test files in this pull request (e.g., in
BalanceControlTest,AccountHolderTest,PaymentsServiceTest, etc.). Please correct them all to improve code quality and consistency.