diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
index 33138747c8..fe174120d4 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
@@ -239,6 +239,12 @@
"Trainings": "Trainings",
"MeetTheABPCommunity": "Meet the ABP ",
"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."
}
}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
index d30f1dbfe0..6ff5f17a6d 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
@@ -1185,6 +1185,7 @@
"PricingDiscount": "Save",
"PricingTeamTitle": "Team",
"PricingBusinessTitle": "Business",
- "PricingEnterpriseTitle": "Enterprise"
+ "PricingEnterpriseTitle": "Enterprise",
+ "SpecialDiscount": "Special Discount"
}
}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
index 79c65954b1..a6d1389e2e 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
@@ -615,7 +615,7 @@
"TotalDeveloperPrice": "Toplam Geliştirici Fiyatı",
"Purchase_PricePerDeveloper": "{0} geliştirici başına",
"Purchase_IncludedDeveloperInfo": "{0} {1} dahil.",
- "Purchase_LicenseExtraDeveloperPurchaseMessage": "{0} lisansı {1} geliştirici(ler) içerir. Şimdi veya daha sonra ek geliştiriciler ekleyebilirsiniz.",
+ "Purchase_LicenseExtraDeveloperPurchaseMessage": "{0} lisansı {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",
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpUnitTestSqliteConnection.cs b/framework/src/Volo.Abp.EntityFrameworkCore.Sqlite/Volo/Abp/EntityFrameworkCore/Sqlite/AbpUnitTestSqliteConnection.cs
new file mode 100644
index 0000000000..e3b0dd7e30
--- /dev/null
+++ b/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;
+
+///
+/// This class is for unit testing purposes.
+/// It prevents exceptions in concurrent testing because Sqlite is not thread-safe.
+///
+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);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AbpAuditingTestModule.cs b/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AbpAuditingTestModule.cs
index 3a21cfaf5a..c753d65d07 100644
--- a/framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AbpAuditingTestModule.cs
+++ b/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()
diff --git a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/AbpEntityFrameworkCoreTestModule.cs b/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/AbpEntityFrameworkCoreTestModule.cs
index f23ac14fda..7db3130827 100644
--- a/framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/AbpEntityFrameworkCoreTestModule.cs
+++ b/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().UseSqlite(connection).Options))
diff --git a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AbpAccountApplicationTestModule.cs b/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AbpAccountApplicationTestModule.cs
index 100087f1fb..2a6c932753 100644
--- a/modules/account/test/Volo.Abp.Account.Application.Tests/Volo/Abp/Account/AbpAccountApplicationTestModule.cs
+++ b/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(
diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreTestModule.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreTestModule.cs
index bb8570d253..42d246625e 100644
--- a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo/Abp/BackgroundJobs/EntityFrameworkCore/AbpBackgroundJobsEntityFrameworkCoreTestModule.cs b/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo/Abp/BackgroundJobs/EntityFrameworkCore/AbpBackgroundJobsEntityFrameworkCoreTestModule.cs
index a642ddc227..c19016d0d0 100644
--- a/modules/background-jobs/test/Volo.Abp.BackgroundJobs.EntityFrameworkCore.Tests/Volo/Abp/BackgroundJobs/EntityFrameworkCore/AbpBackgroundJobsEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
index 082b1640b7..038ca5874d 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/EntityFrameworkCore/BlobStoringDatabaseEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
index 59db9b77df..b48e29993d 100644
--- a/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
+++ b/modules/blob-storing-database/test/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests/Volo.Abp.BlobStoring.Database.EntityFrameworkCore.Tests.csproj
@@ -11,6 +11,7 @@
+
diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs
index 0a27448f6e..498e8e7ab6 100644
--- a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs
+++ b/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().UseSqlite(connection).Options;
diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/CmsKitEntityFrameworkCoreTestModule.cs b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/CmsKitEntityFrameworkCoreTestModule.cs
index 9b7fee252a..139e4bdce9 100644
--- a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/EntityFrameworkCore/CmsKitEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
index eb3a5ae5bd..fe3e32291f 100644
--- a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
index 3329f1dba6..242cf75233 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreTestModule.cs b/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreTestModule.cs
index beb2797ea9..f0d1966bd0 100644
--- a/modules/identity/test/Volo.Abp.Identity.EntityFrameworkCore.Tests/Volo/Abp/Identity/EntityFrameworkCore/AbpIdentityEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs
index 6e934d1d8c..e6711fc180 100644
--- a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/AbpIdentityServerTestEntityFrameworkCoreModule.cs
+++ b/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(
diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictEntityFrameworkCoreTestModule.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictEntityFrameworkCoreTestModule.cs
index b7bf216098..c47ecc7996 100644
--- a/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs
index 9a2c51853e..58df348af7 100644
--- a/modules/setting-management/test/Volo.Abp.SettingManagement.EntityFrameworkCore.Tests/Volo/Abp/SettingManagement/EntityFrameworkCore/AbpSettingManagementEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementEntityFrameworkCoreTestModule.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementEntityFrameworkCoreTestModule.cs
index 9358a42216..336fbb228f 100644
--- a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo/Abp/TenantManagement/EntityFrameworkCore/AbpTenantManagementEntityFrameworkCoreTestModule.cs
+++ b/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(
diff --git a/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts b/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts
index 84d40d982a..ed938c5107 100644
--- a/npm/ng-packs/packages/oauth/src/lib/services/remember-me.service.ts
+++ b/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) {
diff --git a/npm/ng-packs/packages/oauth/src/lib/tests/remember-me.service.spec.ts b/npm/ng-packs/packages/oauth/src/lib/tests/remember-me.service.spec.ts
new file mode 100644
index 0000000000..0ef7116e92
--- /dev/null
+++ b/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;
+ let rememberMeService: RememberMeService;
+ let abpLocalStorageService: SpyObject;
+
+ 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);
+ });
+
+});
\ No newline at end of file
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
index db468c4a6d..e2904e33f1 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
+++ b/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;
+ let router: Router;
const events$ = new Subject();
const createComponent = createComponentFactory({
diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
index 1804d8cff7..b316391b5f 100644
--- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
+++ b/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()
diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
index 7abdfb25f8..aed68ef88c 100644
--- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests/EntityFrameworkCore/MyProjectNameEntityFrameworkCoreTestModule.cs
+++ b/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(