Browse Source

Merge branch 'dev' into issue-3807/L

pull/19126/head
Onur BURAL 2 years ago
committed by GitHub
parent
commit
52b9165088
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      .github/ISSUE_TEMPLATE/config.yml
  2. 8
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
  3. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  4. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
  5. 4
      docs/en/Modules/Tenant-Management.md
  6. 29
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  7. 52
      framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpUnitTestSqliteConnection.cs
  8. 8
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumConverter.cs
  9. 2
      framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AbpAuditingTestModule.cs
  10. 2
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/AbpEntityFrameworkCoreTestModule.cs
  11. 19
      framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpStringToEnum_Tests.cs
  12. 2
      modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AbpAccountApplicationTestModule.cs
  13. 2
      modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreTestModule.cs
  14. 2
      modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo/Abp/BackgroundJobs/EntityFrameworkCore/AbpBackgroundJobsEntityFrameworkCoreTestModule.cs
  15. 6
      modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
  16. 1
      modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
  17. 2
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs
  18. 2
      modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/CmsKitEntityFrameworkCoreTestModule.cs
  19. 2
      modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
  20. 2
      modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
  21. 2
      modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreTestModule.cs
  22. 2
      modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs
  23. 2
      modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictEntityFrameworkCoreTestModule.cs
  24. 2
      modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs
  25. 2
      modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementEntityFrameworkCoreTestModule.cs
  26. 2
      npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts
  27. 71
      npm/ng-packs/packages/oauth/src/lib/tests/remember-me.service.spec.ts
  28. 1
      npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
  29. 2
      templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
  30. 2
      templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs

2
.github/ISSUE_TEMPLATE/config.yml

@ -2,7 +2,7 @@ blank_issues_enabled: true
contact_links:
- name: Issue with ABP Commercial
url: https://support.abp.io/QA/Questions
about: Please open issues relating to ABP Commercial in support.abp.io.
about: Please open ABP Commercial related issues at https://support.abp.io.
- name: Ask a question (community support)
url: https://stackoverflow.com/questions/tagged/abp
about: Ask a question that will be answered by the ABP community

8
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json

@ -239,6 +239,12 @@
"Trainings": "Trainings",
"MeetTheABPCommunity": "Meet the ABP <span class=\"gradient-community\">Community</span>",
"DisplayName:CommunityIndexPagePoll": "Community Index Page Poll",
"ReturnOfInvestment": "Return Of Investment"
"ReturnOfInvestment": "Return Of Investment",
"PromotionalOffers": "Promotional Offers",
"PromotionalOffersDefinition": "Discounts, seasonal campaigns, etc.",
"EventsDefinition": "Community Talks, Webinars, ABP .NET Conference, etc.",
"ReleaseNotesDefinition": "ABP.IO Platform releases, new products, etc.",
"Newsletter": "Newsletter",
"NewsletterDefinition": "Blog posts, community news, etc."
}
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -1186,6 +1186,6 @@
"PricingTeamTitle": "Team",
"PricingBusinessTitle": "Business",
"PricingEnterpriseTitle": "Enterprise"
"SpecialDiscount": "Special Discount"
}
}

2
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json

@ -615,7 +615,7 @@
"TotalDeveloperPrice": "Toplam Geliştirici Fiyatı",
"Purchase_PricePerDeveloper": "<span>{0}</span> geliştirici başına",
"Purchase_IncludedDeveloperInfo": "{0} {1} dahil.",
"Purchase_LicenseExtraDeveloperPurchaseMessage": "<span class=\"fw-6\">{0} lisansı</span> {1} geliştirici(ler) içerir. Şimdi veya daha sonra ek geliştiriciler ekleyebilirsiniz.",
"Purchase_LicenseExtraDeveloperPurchaseMessage": "<span class=\"fw-6\">{0} lisansı</span> {1} geliştirici içerir. Şimdi veya daha sonra ek geliştirici ekleyebilirsiniz.",
"StartupTemplates_Page_Title": "ABP Başlangıç Şablonları",
"StartupTemplates_Page_Description": "ABP Commercial, her düzeyde karmaşıklığa sahip projeler oluşturmanıza olanak tanır. Önceden oluşturulmuş iki ana başlangıç projesi sunar. Gereksinimlerinize yakın olanı seçebilir ve bunun üzerine kendi özel projenizi oluşturabilirsiniz.",
"MicroserviceStartupSolutionForDotnet": ".NET için Mikroservis Başlatma Projesi",

4
docs/en/Modules/Tenant-Management.md

@ -56,7 +56,7 @@ This module defines the following ETOs (Event Transfer Objects) to allow you to
**Example: Get notified when a new tenant has been created**
```
```cs
public class MyHandler :
IDistributedEventHandler<EntityCreatedEto<TenantEto>>,
ITransientDependency
@ -131,4 +131,4 @@ ABP Framework allows to use *database per tenant* approach that allows a tenant
## See Also
* [Multi-Tenancy](../Multi-Tenancy.md)
* [ABP Commercial SaaS Module](https://docs.abp.io/en/commercial/latest/modules/saas)
* [ABP Commercial SaaS Module](https://docs.abp.io/en/commercial/latest/modules/saas)

29
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -54,19 +54,22 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
output.TagMode = TagMode.StartTagAndEndTag;
output.TagName = "div";
LeaveOnlyGroupAttributes(context, output);
if (TagHelper.FloatingLabel && !isCheckBox)
if (!IsOutputHidden(output))
{
output.Attributes.AddClass("form-floating");
}
if (TagHelper.AddMarginBottomClass)
{
output.Attributes.AddClass(isCheckBox ? "mb-2" : "mb-3");
}
if (isCheckBox)
{
output.Attributes.AddClass("custom-checkbox");
output.Attributes.AddClass("custom-control");
output.Attributes.AddClass("form-check");
if (TagHelper.FloatingLabel && !isCheckBox)
{
output.Attributes.AddClass("form-floating");
}
if (TagHelper.AddMarginBottomClass)
{
output.Attributes.AddClass(isCheckBox ? "mb-2" : "mb-3");
}
if (isCheckBox)
{
output.Attributes.AddClass("custom-checkbox");
output.Attributes.AddClass("custom-control");
output.Attributes.AddClass("form-check");
}
}
output.Content.AppendHtml(innerHtml);
}
@ -263,7 +266,7 @@ public class AbpInputTagHelperService : AbpTagHelperService<AbpInputTagHelper>
}
protected virtual async Task<string> GetLabelAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag, bool isCheckbox)
{
{
if (IsOutputHidden(inputTag) || TagHelper.SuppressLabel)
{
return string.Empty;

52
framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpUnitTestSqliteConnection.cs

@ -0,0 +1,52 @@
using System.Threading;
using Microsoft.Data.Sqlite;
using Volo.Abp.Threading;
namespace Volo.Abp.EntityFrameworkCore.Sqlite;
/// <summary>
/// This class is for unit testing purposes.
/// It prevents exceptions in concurrent testing because Sqlite is not thread-safe.
/// </summary>
public class AbpUnitTestSqliteConnection : SqliteConnection
{
public AbpUnitTestSqliteConnection(string connectionString)
: base(connectionString)
{
}
public override SqliteCommand CreateCommand()
{
return new AbpSqliteCommand
{
Connection = this,
CommandTimeout = DefaultTimeout,
Transaction = Transaction
};
}
}
internal class AbpSqliteCommand : SqliteCommand
{
private readonly static SemaphoreSlim Semaphore = new SemaphoreSlim(1, 1);
public override SqliteConnection? Connection
{
get => base.Connection;
set
{
using (Semaphore.Lock())
{
base.Connection = value;
}
}
}
protected override void Dispose(bool disposing)
{
using (Semaphore.Lock())
{
base.Dispose(disposing);
}
}
}

8
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/AbpStringToEnumConverter.cs

@ -11,6 +11,8 @@ public class AbpStringToEnumConverter<T> : JsonConverter<T>
private JsonSerializerOptions? _readJsonSerializerOptions;
private JsonSerializerOptions? _writeJsonSerializerOptions;
public AbpStringToEnumConverter()
: this(namingPolicy: null, allowIntegerValues: true)
{
@ -39,7 +41,11 @@ public class AbpStringToEnumConverter<T> : JsonConverter<T>
public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
{
JsonSerializer.Serialize(writer, value);
_writeJsonSerializerOptions ??= JsonSerializerOptionsHelper.Create(options, x =>
x == this ||
x.GetType() == typeof(AbpStringToEnumFactory));
JsonSerializer.Serialize(writer, value, _writeJsonSerializerOptions);
}
public override T ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)

2
framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AbpAuditingTestModule.cs

@ -62,7 +62,7 @@ public class AbpAuditingTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
using (var context = new AbpAuditingTestDbContext(new DbContextOptionsBuilder<AbpAuditingTestDbContext>()

2
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/AbpEntityFrameworkCoreTestModule.cs

@ -93,7 +93,7 @@ public class AbpEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
using (var context = new TestMigrationsDbContext(new DbContextOptionsBuilder<TestMigrationsDbContext>().UseSqlite(connection).Options))

19
framework/test/Volo.Abp.Json.Tests/Volo/Abp/Json/AbpStringToEnum_Tests.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
using Shouldly;
using Volo.Abp.Json.SystemTextJson.JsonConverters;
using Xunit;
@ -53,10 +54,26 @@ public class AbpStringToEnum_Tests
var testClassJson = JsonSerializer.Serialize(new TestClass()
{
Day = DayOfWeek.Monday
});
}, options);
testClassJson.ShouldBe("{\"Day\":1}");
options = new JsonSerializerOptions()
{
Converters =
{
new AbpStringToEnumFactory(),
new JsonStringEnumConverter()
}
};
testClassJson = JsonSerializer.Serialize(new TestClass()
{
Day = DayOfWeek.Monday
}, options);
testClassJson.ShouldBe("{\"Day\":\"Monday\"}");
testClassJson = JsonSerializer.Serialize(new Dictionary<DayOfWeek, string>
{
{DayOfWeek.Monday, "Mo"}

2
modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AbpAccountApplicationTestModule.cs

@ -44,7 +44,7 @@ public class AbpAccountApplicationTestModule : AbpModule
}
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new IdentityDbContext(

2
modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreTestModule.cs

@ -31,7 +31,7 @@ public class AbpAuditLoggingEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new AbpAuditLoggingDbContext(

2
modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo/Abp/BackgroundJobs/EntityFrameworkCore/AbpBackgroundJobsEntityFrameworkCoreTestModule.cs

@ -31,7 +31,7 @@ public class AbpBackgroundJobsEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new BackgroundJobsDbContext(

6
modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs

@ -2,6 +2,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
using Volo.Abp.EntityFrameworkCore.Sqlite;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
@ -9,7 +10,8 @@ namespace Volo.Abp.BlobStoring.Database.EntityFrameworkCore;
[DependsOn(
typeof(BlobStoringDatabaseTestBaseModule),
typeof(BlobStoringDatabaseEntityFrameworkCoreModule)
typeof(BlobStoringDatabaseEntityFrameworkCoreModule),
typeof(AbpEntityFrameworkCoreSqliteModule)
)]
public class BlobStoringDatabaseEntityFrameworkCoreTestModule : AbpModule
{
@ -28,7 +30,7 @@ public class BlobStoringDatabaseEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new BlobStoringDbContext(

1
modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj

@ -11,6 +11,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" />
<ProjectReference Include="..\..\src\Volo.Abp.BlobStoring.Database.EntityFrameworkCore\Volo.Abp.BlobStoring.Database.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.Sqlite\Volo.Abp.EntityFrameworkCore.Sqlite.csproj" />
<ProjectReference Include="..\Volo.Abp.BlobStoring.Database.TestBase\Volo.Abp.BlobStoring.Database.TestBase.csproj" />
</ItemGroup>

2
modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs

@ -33,7 +33,7 @@ namespace Volo.Blogging.EntityFrameworkCore
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<BloggingDbContext>().UseSqlite(connection).Options;

2
modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/CmsKitEntityFrameworkCoreTestModule.cs

@ -30,7 +30,7 @@ public class CmsKitEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new CmsKitDbContext(

2
modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs

@ -30,7 +30,7 @@ namespace Volo.Docs.EntityFrameworkCore
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new DocsDbContext(

2
modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs

@ -36,7 +36,7 @@ public class AbpFeatureManagementEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new FeatureManagementDbContext(

2
modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreTestModule.cs

@ -35,7 +35,7 @@ public class AbpIdentityEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new IdentityDbContext(

2
modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs

@ -40,7 +40,7 @@ public class AbpIdentityServerTestEntityFrameworkCoreModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new IdentityDbContext(

2
modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictEntityFrameworkCoreTestModule.cs

@ -37,7 +37,7 @@ public class OpenIddictEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new IdentityDbContext(

2
modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs

@ -33,7 +33,7 @@ public class AbpSettingManagementEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new SettingManagementDbContext(

2
modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementEntityFrameworkCoreTestModule.cs

@ -37,7 +37,7 @@ public class AbpTenantManagementEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new TenantManagementDbContext(

2
npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts

@ -17,7 +17,7 @@ export class RememberMeService {
}
get() {
return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe)));
return Boolean(JSON.parse(this.localStorageService.getItem(this.#rememberMe) || 'false'));
}
getFromToken(accessToken: string) {

71
npm/ng-packs/packages/oauth/src/lib/tests/remember-me.service.spec.ts

@ -0,0 +1,71 @@
import { SpectatorService, SpyObject, createServiceFactory } from "@ngneat/spectator/jest";
import { RememberMeService } from "../services/remember-me.service";
import { AbpLocalStorageService } from "@abp/ng.core";
describe('RememberMeService', () => {
const key = 'remember_me';
let spectator: SpectatorService<RememberMeService>;
let rememberMeService: RememberMeService;
let abpLocalStorageService: SpyObject<AbpLocalStorageService>;
const createService = createServiceFactory({
service: RememberMeService,
mocks: [AbpLocalStorageService]
});
beforeEach(() => {
spectator = createService();
rememberMeService = spectator.inject(RememberMeService);
abpLocalStorageService = spectator.inject(AbpLocalStorageService);
});
it('should be created', () => {
expect(1).toBe(1);
expect(rememberMeService).toBeTruthy();
expect(abpLocalStorageService).toBeTruthy();
});
it('should set remember me', () => {
rememberMeService.set(true);
expect(abpLocalStorageService.setItem).toHaveBeenCalledWith(key, 'true');
expect(abpLocalStorageService.setItem).toHaveBeenCalledTimes(1);
});
it('should remove remember me', () => {
rememberMeService.remove();
expect(abpLocalStorageService.removeItem).toHaveBeenCalledWith(key);
expect(abpLocalStorageService.removeItem).toBeCalledTimes(1);
});
it('if notting has ben setted, it should return false value', () => {
expect(rememberMeService.get()).toBe(false);
});
it('should return true value', () => {
abpLocalStorageService.getItem.mockReturnValueOnce('true');
expect(rememberMeService.get()).toBe(true);
});
it('should return false value', () => {
abpLocalStorageService.getItem.mockReturnValueOnce('false');
expect(rememberMeService.get()).toBe(false);
});
it('should return true when parsed token is setted to true', () => {
const data = { "remember_me": "True" };
const base64_encoded = btoa(JSON.stringify(data));
const tokenWithValueTrue = "random." + base64_encoded + ".random";
expect(rememberMeService.getFromToken(tokenWithValueTrue)).toBe(true);
});
it('should return false when value is not setted(undefined)', () => {
const data = {};
const base64_encoded = btoa(JSON.stringify(data));
const tokenWithValueTrue = "random." + base64_encoded + ".random";
expect(rememberMeService.getFromToken(tokenWithValueTrue)).toBe(false);
});
});

1
npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts

@ -7,6 +7,7 @@ import { LoaderBarComponent } from '../components/loader-bar/loader-bar.componen
describe('LoaderBarComponent', () => {
let spectator: Spectator<LoaderBarComponent>;
let router: Router;
const events$ = new Subject();
const createComponent = createComponentFactory({

2
templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs

@ -59,7 +59,7 @@ public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<MyProjectNameDbContext>()

2
templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs

@ -33,7 +33,7 @@ public class MyProjectNameEntityFrameworkCoreTestModule : AbpModule
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
var connection = new AbpUnitTestSqliteConnection("Data Source=:memory:");
connection.Open();
new MyProjectNameDbContext(

Loading…
Cancel
Save