mirror of
https://github.com/ivanpaulovich/clean-architecture-manga.git
synced 2025-01-07 03:17:10 +08:00
Fix GH action run (#285)
* Create dependabot.yml (#1) * Use fake implementation on integration test * Use fake implementation on integration test (#19) * Update dotnet-core.yml (#14) * Bump decode-uri-component from 0.2.0 to 0.2.2 in /wallet-spa (#23) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/setup-dotnet from 1 to 3 (#7) Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 1 to 3. - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](https://github.com/actions/setup-dotnet/compare/v1...v3) --- updated-dependencies: - dependency-name: actions/setup-dotnet dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Guilherme Branco Stracini <guilherme@guilhermebranco.com.br> * Bump y18n from 4.0.0 to 4.0.3 in /wallet-spa (#4) Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.3. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/y18n-v4.0.3/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/compare/v4.0.0...y18n-v4.0.3) --- updated-dependencies: - dependency-name: y18n dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.2 to 0.21.2 in /wallet-spa (#2) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.2/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump ini from 1.3.5 to 1.3.8 in /wallet-spa (#3) Bumps [ini](https://github.com/npm/ini) from 1.3.5 to 1.3.8. - [Release notes](https://github.com/npm/ini/releases) - [Changelog](https://github.com/npm/ini/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/ini/compare/v1.3.5...v1.3.8) --- updated-dependencies: - dependency-name: ini dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump elliptic from 6.5.3 to 6.5.4 in /wallet-spa (#5) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4. - [Release notes](https://github.com/indutny/elliptic/releases) - [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4) --- updated-dependencies: - dependency-name: elliptic dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump coverlet.msbuild from 3.1.0 to 3.2.0 (#11) Bumps [coverlet.msbuild](https://github.com/coverlet-coverage/coverlet) from 3.1.0 to 3.2.0. - [Release notes](https://github.com/coverlet-coverage/coverlet/releases) - [Commits](https://github.com/coverlet-coverage/coverlet/compare/v3.1.0...v3.2.0) --- updated-dependencies: - dependency-name: coverlet.msbuild dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump xunit from 2.4.2-pre.12 to 2.4.2 (#12) Bumps [xunit](https://github.com/xunit/xunit) from 2.4.2-pre.12 to 2.4.2. - [Release notes](https://github.com/xunit/xunit/releases) - [Commits](https://github.com/xunit/xunit/compare/2.4.2-pre.12...2.4.2) --- updated-dependencies: - dependency-name: xunit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Microsoft.Extensions.Http from 6.0.0 to 7.0.0 (#13) Bumps [Microsoft.Extensions.Http](https://github.com/dotnet/runtime) from 6.0.0 to 7.0.0. - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v6.0.0...v7.0.0) --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Scrutor from 3.3.0 to 4.2.1 (#18) Bumps [Scrutor](https://github.com/khellang/Scrutor) from 3.3.0 to 4.2.1. - [Release notes](https://github.com/khellang/Scrutor/releases) - [Commits](https://github.com/khellang/Scrutor/compare/v3.3.0...v4.2.1) --- updated-dependencies: - dependency-name: Scrutor dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Guilherme Branco Stracini <guilherme@guilhermebranco.com.br> * Bump qs from 6.5.2 to 6.5.3 in /wallet-spa (#20) Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump minimist from 1.2.5 to 1.2.8 in /wallet-spa (#21) Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8. - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump json5 from 1.0.1 to 1.0.2 in /wallet-spa (#22) Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump terser from 4.8.0 to 4.8.1 in /wallet-spa (#26) Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/compare/v4.8.0...v4.8.1) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump eventsource from 1.0.7 to 1.1.2 in /wallet-spa (#31) Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.2. - [Release notes](https://github.com/EventSource/eventsource/releases) - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md) - [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.2) --- updated-dependencies: - dependency-name: eventsource dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump ansi-regex in /wallet-spa (#32) Bumps [ansi-regex](https://github.com/chalk/ansi-regex), [ansi-regex](https://github.com/chalk/ansi-regex) and [ansi-regex](https://github.com/chalk/ansi-regex). These dependencies needed to be updated together. Updates `ansi-regex` from 4.1.0 to 5.0.1 - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v5.0.1) Updates `ansi-regex` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v5.0.1) Updates `ansi-regex` from 3.0.0 to 5.0.1 - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v5.0.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect - dependency-name: ansi-regex dependency-type: indirect - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump shell-quote and react-scripts in /wallet-spa (#30) Bumps [shell-quote](https://github.com/ljharb/shell-quote) to 1.8.0 and updates ancestor dependency [react-scripts](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-scripts). These dependencies need to be updated together. Updates `shell-quote` from 1.7.2 to 1.8.0 - [Release notes](https://github.com/ljharb/shell-quote/releases) - [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/shell-quote/compare/v1.7.2...v1.8.0) Updates `react-scripts` from 3.4.3 to 5.0.1 - [Release notes](https://github.com/facebook/create-react-app/releases) - [Changelog](https://github.com/facebook/create-react-app/blob/main/CHANGELOG-3.x.md) - [Commits](https://github.com/facebook/create-react-app/commits/react-scripts@5.0.1/packages/react-scripts) --- updated-dependencies: - dependency-name: shell-quote dependency-type: indirect - dependency-name: react-scripts dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump Newtonsoft.Json from 13.0.1 to 13.0.3 (#16) Bumps [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) from 13.0.1 to 13.0.3. - [Release notes](https://github.com/JamesNK/Newtonsoft.Json/releases) - [Commits](https://github.com/JamesNK/Newtonsoft.Json/compare/13.0.1...13.0.3) --- updated-dependencies: - dependency-name: Newtonsoft.Json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump tar and node-sass in /wallet-spa (#36) Bumps [tar](https://github.com/npm/node-tar) to 6.1.13 and updates ancestor dependency [node-sass](https://github.com/sass/node-sass). These dependencies need to be updated together. Updates `tar` from 2.2.2 to 6.1.13 - [Release notes](https://github.com/npm/node-tar/releases) - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-tar/compare/v2.2.2...v6.1.13) Updates `node-sass` from 4.14.1 to 8.0.0 - [Release notes](https://github.com/sass/node-sass/releases) - [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md) - [Commits](https://github.com/sass/node-sass/compare/v4.14.1...v8.0.0) --- updated-dependencies: - dependency-name: tar dependency-type: indirect - dependency-name: node-sass dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Guilherme Branco Stracini <guilherme@guilhermebranco.com.br> * Bump lodash from 4.17.20 to 4.17.21 in /wallet-spa (#37) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) --- updated-dependencies: - dependency-name: lodash dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump path-parse from 1.0.6 to 1.0.7 in /wallet-spa (#33) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Guilherme Branco Stracini <guilherme@guilhermebranco.com.br> * Update to .NET 7 * Disable Nullable * Update Nuget packages --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
parent
433e68abe3
commit
1afb93bbfd
25
.github/dependabot.yml
vendored
Normal file
25
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 10
|
||||
|
||||
- package-ecosystem: "nuget"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 10
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 10
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 10
|
4
.github/workflows/dotnet-core.yml
vendored
4
.github/workflows/dotnet-core.yml
vendored
@ -8,8 +8,8 @@ jobs:
|
||||
PersistenceModule__DefaultConnection: Server=localhost;User Id=sa;Password=<YourStrong!Passw0rd>;Database=Accounts;
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-dotnet@v1
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
include-prerelease: true
|
||||
|
@ -1,6 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<NoWarn>$(NoWarn);CA1062;1591</NoWarn>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<NoWarn>$(NoWarn);CA1062;1591</NoWarn>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -57,7 +57,7 @@ public sealed class CurrencyExchangeService : ICurrencyExchange
|
||||
|
||||
private void ParseCurrencies(string responseJson)
|
||||
{
|
||||
JObject? rates = JObject.Parse(responseJson);
|
||||
JObject rates = JObject.Parse(responseJson);
|
||||
decimal eur = rates["rates"]![Currency.Euro.Code]!.Value<decimal>();
|
||||
decimal cad = rates["rates"]![Currency.Canadian.Code]!.Value<decimal>();
|
||||
decimal gbh = rates["rates"]![Currency.BritishPound.Code]!.Value<decimal>();
|
||||
|
@ -33,7 +33,7 @@ public sealed class ContextFactory : IDesignTimeDbContextFactory<MangaContext>
|
||||
|
||||
private static string ReadDefaultConnectionStringFromAppSettings()
|
||||
{
|
||||
string? envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
||||
string envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
||||
|
||||
IConfigurationRoot configuration = new ConfigurationBuilder()
|
||||
.SetBasePath(Path.Combine(Directory.GetCurrentDirectory()))
|
||||
|
@ -62,7 +62,7 @@ public sealed class AccountRepository : IAccountRepository
|
||||
/// <inheritdoc />
|
||||
public async Task<IAccount> GetAccount(AccountId accountId)
|
||||
{
|
||||
Account? account = await this._context
|
||||
Account account = await this._context
|
||||
.Accounts
|
||||
.Where(e => e.AccountId == accountId)
|
||||
.Select(e => e)
|
||||
@ -94,7 +94,7 @@ public sealed class AccountRepository : IAccountRepository
|
||||
|
||||
public async Task<IAccount> Find(AccountId accountId, string externalUserId)
|
||||
{
|
||||
Account? account = await this._context
|
||||
Account account = await this._context
|
||||
.Accounts
|
||||
.Where(e => e.ExternalUserId == externalUserId && e.AccountId == accountId)
|
||||
.Select(e => e)
|
||||
|
@ -40,7 +40,7 @@ public sealed class AccountRepositoryFake : IAccountRepository
|
||||
/// <inheritdoc />
|
||||
public async Task Delete(AccountId accountId)
|
||||
{
|
||||
Account? accountOld = this._context
|
||||
Account accountOld = this._context
|
||||
.Accounts
|
||||
.SingleOrDefault(e => e.AccountId.Equals(accountId));
|
||||
|
||||
@ -59,7 +59,7 @@ public sealed class AccountRepositoryFake : IAccountRepository
|
||||
|
||||
public async Task<IAccount> Find(AccountId accountId, string externalUserId)
|
||||
{
|
||||
Account? account = this._context
|
||||
Account account = this._context
|
||||
.Accounts
|
||||
.Where(e => e.ExternalUserId == externalUserId && e.AccountId.Equals(accountId))
|
||||
.Select(e => e)
|
||||
@ -77,7 +77,7 @@ public sealed class AccountRepositoryFake : IAccountRepository
|
||||
/// <inheritdoc />
|
||||
public async Task<IAccount> GetAccount(AccountId accountId)
|
||||
{
|
||||
Account? account = this._context
|
||||
Account account = this._context
|
||||
.Accounts
|
||||
.SingleOrDefault(e => e.AccountId.Equals(accountId));
|
||||
|
||||
@ -105,7 +105,7 @@ public sealed class AccountRepositoryFake : IAccountRepository
|
||||
/// <inheritdoc />
|
||||
public async Task Update(Account account, Credit credit)
|
||||
{
|
||||
Account? accountOld = this._context
|
||||
Account accountOld = this._context
|
||||
.Accounts
|
||||
.SingleOrDefault(e => e.AccountId.Equals(account.AccountId));
|
||||
|
||||
@ -124,7 +124,7 @@ public sealed class AccountRepositoryFake : IAccountRepository
|
||||
/// <inheritdoc />
|
||||
public async Task Update(Account account, Debit debit)
|
||||
{
|
||||
Account? accountOld = this._context
|
||||
Account accountOld = this._context
|
||||
.Accounts
|
||||
.SingleOrDefault(e => e.AccountId.Equals(account.AccountId));
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<NoWarn>$(NoWarn);CA1062;1591</NoWarn>
|
||||
<Nullable>enable</Nullable>
|
||||
<Nullable>disable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
@ -12,21 +12,21 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0">
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0">
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@ -1,64 +1,64 @@
|
||||
namespace WebApi.Modules.Common.FeatureFlags;
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Mvc.ApplicationParts;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.FeatureManagement;
|
||||
using Microsoft.FeatureManagement.Mvc;
|
||||
|
||||
namespace WebApi.Modules.Common.FeatureFlags;
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Mvc.ApplicationParts;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.FeatureManagement;
|
||||
using Microsoft.FeatureManagement.Mvc;
|
||||
|
||||
/// <summary>
|
||||
/// Custom Controller Feature Provider.
|
||||
/// </summary>
|
||||
public sealed class CustomControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
|
||||
{
|
||||
private readonly IFeatureManager _featureManager;
|
||||
|
||||
public sealed class CustomControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
|
||||
{
|
||||
private readonly IFeatureManager _featureManager;
|
||||
|
||||
/// <summary>
|
||||
/// Custom Controller Feature Provider constructor.
|
||||
/// </summary>
|
||||
public CustomControllerFeatureProvider(IFeatureManager featureManager) => this._featureManager = featureManager;
|
||||
|
||||
public CustomControllerFeatureProvider(IFeatureManager featureManager) => this._featureManager = featureManager;
|
||||
|
||||
/// <summary>
|
||||
/// Populate Features.
|
||||
/// </summary>
|
||||
public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
|
||||
{
|
||||
for (int i = feature.Controllers.Count - 1; i >= 0; i--)
|
||||
{
|
||||
Type controller = feature.Controllers[i].AsType();
|
||||
foreach (CustomAttributeData customAttribute in controller.CustomAttributes)
|
||||
{
|
||||
if (customAttribute.AttributeType.FullName != typeof(FeatureGateAttribute).FullName)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CustomAttributeTypedArgument constructorArgument = customAttribute.ConstructorArguments.First();
|
||||
if (!(constructorArgument.Value is IEnumerable arguments))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach (object? argumentValue in arguments)
|
||||
{
|
||||
CustomAttributeTypedArgument typedArgument = (CustomAttributeTypedArgument)argumentValue!;
|
||||
CustomFeature typedArgumentValue = (CustomFeature)(int)typedArgument.Value!;
|
||||
bool isFeatureEnabled = this._featureManager
|
||||
.IsEnabledAsync(typedArgumentValue.ToString())
|
||||
.ConfigureAwait(false)
|
||||
.GetAwaiter()
|
||||
.GetResult();
|
||||
|
||||
if (!isFeatureEnabled)
|
||||
{
|
||||
feature.Controllers.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
|
||||
{
|
||||
for (int i = feature.Controllers.Count - 1; i >= 0; i--)
|
||||
{
|
||||
Type controller = feature.Controllers[i].AsType();
|
||||
foreach (CustomAttributeData customAttribute in controller.CustomAttributes)
|
||||
{
|
||||
if (customAttribute.AttributeType.FullName != typeof(FeatureGateAttribute).FullName)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
CustomAttributeTypedArgument constructorArgument = customAttribute.ConstructorArguments.First();
|
||||
if (!(constructorArgument.Value is IEnumerable arguments))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach (object argumentValue in arguments)
|
||||
{
|
||||
CustomAttributeTypedArgument typedArgument = (CustomAttributeTypedArgument)argumentValue!;
|
||||
CustomFeature typedArgumentValue = (CustomFeature)(int)typedArgument.Value!;
|
||||
bool isFeatureEnabled = this._featureManager
|
||||
.IsEnabledAsync(typedArgumentValue.ToString())
|
||||
.ConfigureAwait(false)
|
||||
.GetAwaiter()
|
||||
.GetResult();
|
||||
|
||||
if (!isFeatureEnabled)
|
||||
{
|
||||
feature.Controllers.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,45 +1,45 @@
|
||||
namespace WebApi.Modules.Common;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace WebApi.Modules.Common;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
public static class LoggingExtensions
|
||||
{
|
||||
public static class LoggingExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
/// <param name="services"></param>
|
||||
/// <returns></returns>
|
||||
public static IServiceCollection AddInvalidRequestLogging(this IServiceCollection services)
|
||||
{
|
||||
services.Configure<ApiBehaviorOptions>(o =>
|
||||
{
|
||||
o.InvalidModelStateResponseFactory = actionContext =>
|
||||
{
|
||||
ILogger<Startup>? logger = actionContext
|
||||
.HttpContext
|
||||
.RequestServices
|
||||
.GetRequiredService<ILogger<Startup>>();
|
||||
|
||||
List<string> errors = actionContext.ModelState
|
||||
.Values
|
||||
.SelectMany(x => x.Errors)
|
||||
.Select(x => x.ErrorMessage)
|
||||
.ToList();
|
||||
|
||||
string jsonModelState = JsonSerializer.Serialize(errors);
|
||||
logger.LogWarning("Invalid request.", jsonModelState);
|
||||
|
||||
ValidationProblemDetails problemDetails = new ValidationProblemDetails(actionContext.ModelState);
|
||||
return new BadRequestObjectResult(problemDetails);
|
||||
};
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
public static IServiceCollection AddInvalidRequestLogging(this IServiceCollection services)
|
||||
{
|
||||
services.Configure<ApiBehaviorOptions>(o =>
|
||||
{
|
||||
o.InvalidModelStateResponseFactory = actionContext =>
|
||||
{
|
||||
ILogger<Startup> logger = actionContext
|
||||
.HttpContext
|
||||
.RequestServices
|
||||
.GetRequiredService<ILogger<Startup>>();
|
||||
|
||||
List<string> errors = actionContext.ModelState
|
||||
.Values
|
||||
.SelectMany(x => x.Errors)
|
||||
.Select(x => x.ErrorMessage)
|
||||
.ToList();
|
||||
|
||||
string jsonModelState = JsonSerializer.Serialize(errors);
|
||||
logger.LogWarning("Invalid request.", jsonModelState);
|
||||
|
||||
ValidationProblemDetails problemDetails = new ValidationProblemDetails(actionContext.ModelState);
|
||||
return new BadRequestObjectResult(problemDetails);
|
||||
};
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public sealed class AccountsController : ControllerBase, IOutputPort
|
||||
private readonly Notification _notification;
|
||||
private readonly ICloseAccountUseCase _useCase;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public AccountsController(ICloseAccountUseCase useCase, Notification notification)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ public sealed class AccountsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public AccountsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -26,7 +26,7 @@ public sealed class AccountsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly IGetAccountsUseCase _useCase;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public AccountsController(IGetAccountsUseCase useCase) => this._useCase = useCase;
|
||||
|
||||
|
@ -28,7 +28,7 @@ public sealed class AccountsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public AccountsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -30,7 +30,7 @@ public sealed class TransactionsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public TransactionsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -31,7 +31,7 @@ public sealed class TransactionsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public TransactionsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -31,7 +31,7 @@ public sealed class TransactionsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public TransactionsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -29,7 +29,7 @@ public sealed class AccountsController : ControllerBase, IOutputPort
|
||||
{
|
||||
private readonly Notification _notification;
|
||||
|
||||
private IActionResult? _viewModel;
|
||||
private IActionResult _viewModel;
|
||||
|
||||
public AccountsController(Notification notification) => this._notification = notification;
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<NoWarn>$(NoWarn);CA1062;1591;CA1801;S1128;S1481;S1075</NoWarn>
|
||||
<Nullable>enable</Nullable>
|
||||
<Nullable>disable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
@ -21,29 +21,29 @@
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Microsoft -->
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0">
|
||||
<PackageReference Include="EPPlus" Version="6.1.3" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.FeatureManagement.AspNetCore" Version="2.4.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.11.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.FeatureManagement.AspNetCore" Version="2.5.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
|
||||
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Third party -->
|
||||
<PackageReference Include="prometheus-net.AspNetCore" Version="5.0.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
||||
<PackageReference Include="EPPlus.Core" Version="1.5.4" />
|
||||
<PackageReference Include="prometheus-net.AspNetCore" Version="8.0.0" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||
<!-- Decorator injection comparison https://greatrexpectations.com/2018/10/25/decorators-in-net-core-with-dependency-injection -->
|
||||
<PackageReference Include="Scrutor" Version="3.3.0" />
|
||||
<PackageReference Include="Scrutor" Version="4.2.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>enable</Nullable>
|
||||
<Nullable>disable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
@ -12,14 +12,14 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0-preview-20211109-03" />
|
||||
<PackageReference Include="xunit" Version="2.4.2-pre.12" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="6.0.0" />
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.1.0">
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.4" />
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.2.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
@ -63,8 +63,8 @@ public sealed class SunnyDayTests : IClassFixture<CustomWebApplicationFactory>
|
||||
HttpClient client = this._factory.CreateClient();
|
||||
FormUrlEncodedContent content = new FormUrlEncodedContent(new[]
|
||||
{
|
||||
new KeyValuePair<string?, string?>("amount", amount.ToString(CultureInfo.InvariantCulture)),
|
||||
new KeyValuePair<string?, string?>("currency", "USD")
|
||||
new KeyValuePair<string, string>("amount", amount.ToString(CultureInfo.InvariantCulture)),
|
||||
new KeyValuePair<string, string>("currency", "USD")
|
||||
});
|
||||
|
||||
HttpResponseMessage response = await client.PatchAsync($"api/v1/Transactions/{account}/Deposit", content)
|
||||
@ -83,8 +83,8 @@ public sealed class SunnyDayTests : IClassFixture<CustomWebApplicationFactory>
|
||||
|
||||
FormUrlEncodedContent content = new FormUrlEncodedContent(new[]
|
||||
{
|
||||
new KeyValuePair<string?, string?>("amount", amount.ToString(CultureInfo.InvariantCulture)),
|
||||
new KeyValuePair<string?, string?>("currency", "USD")
|
||||
new KeyValuePair<string, string>("amount", amount.ToString(CultureInfo.InvariantCulture)),
|
||||
new KeyValuePair<string, string>("currency", "USD")
|
||||
});
|
||||
|
||||
HttpResponseMessage response = await client.PatchAsync($"api/v1/Transactions/{account}/Withdraw", content)
|
||||
|
@ -1,9 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>enable</Nullable>
|
||||
<Nullable>disable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
@ -12,14 +12,14 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0-preview-20211109-03" />
|
||||
<PackageReference Include="xunit" Version="2.4.2-pre.12" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="6.0.0" />
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.1.0">
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.4" />
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.2.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
@ -1,30 +1,30 @@
|
||||
namespace IntegrationTests.CurrencyExchangeTests;
|
||||
|
||||
using System.Threading.Tasks;
|
||||
using Domain.ValueObjects;
|
||||
using Infrastructure.CurrencyExchange;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Xunit;
|
||||
|
||||
namespace IntegrationTests.CurrencyExchangeTests;
|
||||
|
||||
using System.Threading.Tasks;
|
||||
using Domain.ValueObjects;
|
||||
using Infrastructure.CurrencyExchange;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Xunit;
|
||||
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
public sealed class ConvertEuroToDollarTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Convert()
|
||||
{
|
||||
ServiceCollection serviceCollection = new ServiceCollection();
|
||||
|
||||
serviceCollection.AddHttpClient(CurrencyExchangeService.HttpClientName);
|
||||
serviceCollection.AddSingleton<CurrencyExchangeService>();
|
||||
|
||||
ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
CurrencyExchangeService sut = serviceProvider.GetRequiredService<CurrencyExchangeService>();
|
||||
|
||||
Money usdMoney = new Money(100, Currency.Euro);
|
||||
Money actual = await sut.Convert(usdMoney, Currency.Dollar);
|
||||
|
||||
Assert.True(actual.Amount > 100);
|
||||
Assert.Equal("USD", actual.Currency.Code);
|
||||
}
|
||||
public sealed class ConvertEuroToDollarTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Convert()
|
||||
{
|
||||
ServiceCollection serviceCollection = new ServiceCollection();
|
||||
|
||||
serviceCollection.AddHttpClient(CurrencyExchangeService.HttpClientName);
|
||||
serviceCollection.AddSingleton<CurrencyExchangeFake>();
|
||||
|
||||
ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
CurrencyExchangeFake sut = serviceProvider.GetRequiredService<CurrencyExchangeFake>();
|
||||
|
||||
Money usdMoney = new Money(100, Currency.Euro);
|
||||
Money actual = await sut.Convert(usdMoney, Currency.Dollar);
|
||||
|
||||
Assert.True(actual.Amount > 100);
|
||||
Assert.Equal("USD", actual.Currency.Code);
|
||||
}
|
||||
}
|
||||
|
@ -1,32 +1,32 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>enable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NeutralLanguage>en</NeutralLanguage>
|
||||
<NoWarn>1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0-preview-20211109-03" />
|
||||
<PackageReference Include="xunit" Version="2.4.2-pre.12" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.1.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Application\Application.csproj" />
|
||||
<ProjectReference Include="..\..\src\Infrastructure\Infrastructure.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>enable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<NeutralLanguage>en</NeutralLanguage>
|
||||
<NoWarn>1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.4" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.2.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\Application\Application.csproj" />
|
||||
<ProjectReference Include="..\..\src\Infrastructure\Infrastructure.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
<Nullable>enable</Nullable>
|
||||
<NullableReferenceTypes>true</NullableReferenceTypes>
|
||||
@ -12,14 +12,14 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0-preview-20211109-03" />
|
||||
<PackageReference Include="xunit" Version="2.4.2-pre.12" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.1.0">
|
||||
<PackageReference Include="coverlet.msbuild" Version="3.2.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
@ -1,15 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IdentityServer4" Version="4.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="4.1.1-dev-00241" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.11.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="7.0.4" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="6.1.0" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
22622
wallet-spa/package-lock.json
generated
22622
wallet-spa/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -9,18 +9,18 @@
|
||||
"@testing-library/react": "^9.5.0",
|
||||
"@testing-library/user-event": "^7.2.1",
|
||||
"@types/node": "^14.11.2",
|
||||
"axios": "^0.19.0",
|
||||
"axios": "^0.21.2",
|
||||
"env-cmd": "^10.1.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"fontsource-roboto": "^3.0.3",
|
||||
"jquery": "^3.4.1",
|
||||
"node-sass": "^4.14.1",
|
||||
"node-sass": "^8.0.0",
|
||||
"oidc-client": "^1.8.2",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-router-bootstrap": "^0.25.0",
|
||||
"react-router-dom": "^5.0.1",
|
||||
"react-scripts": "3.4.3",
|
||||
"react-scripts": "5.0.1",
|
||||
"reactstrap": "^8.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
|
Loading…
Reference in New Issue
Block a user