From 999ed262b2da3bba8f5bb06bfb8c3e7b42bce3c9 Mon Sep 17 00:00:00 2001 From: yueyinqiu Date: Mon, 10 Mar 2025 14:49:50 +0800 Subject: [PATCH 1/4] tests --- E2eTest/SingleRecordBasicTest.cs | 16 +++--- E2eTest/WhereTest.cs | 18 +++++++ E2eTestWebApp/TestPages/TestPageBase.razor.cs | 7 +-- E2eTestWebApp/TestPages/WhereTestPage.cs | 53 +++++++++++++++++++ 4 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 E2eTest/WhereTest.cs create mode 100644 E2eTestWebApp/TestPages/WhereTestPage.cs diff --git a/E2eTest/SingleRecordBasicTest.cs b/E2eTest/SingleRecordBasicTest.cs index ffc8818..23b9018 100644 --- a/E2eTest/SingleRecordBasicTest.cs +++ b/E2eTest/SingleRecordBasicTest.cs @@ -24,13 +24,13 @@ public async Task AddTest() [ { "id":12, - "normal":"Norm", + "Normal":"Norm", "Renamed":"R", "Index":"I", "UniqueIndex":"633a97d2-0c92-4c68-883b-364f94ad6030", - "enum":0, - "nested":{"value":1234}, - "largeNumber":9007199254740991 + "Enum":0, + "Nested":{"value":1234}, + "LargeNumber":9007199254740991 } ] """, records); @@ -67,13 +67,13 @@ public async Task UpdateTest() [ { "id":12, - "normal":"Updated", + "Normal":"Updated", "Renamed":"R", "Index":"I", "UniqueIndex":"633a97d2-0c92-4c68-883b-364f94ad6030", - "enum":0, - "nested":{"value":1234}, - "largeNumber":9007199254740991 + "Enum":0, + "Nested":{"value":1234}, + "LargeNumber":9007199254740991 } ] """, records); diff --git a/E2eTest/WhereTest.cs b/E2eTest/WhereTest.cs new file mode 100644 index 0000000..1e01004 --- /dev/null +++ b/E2eTest/WhereTest.cs @@ -0,0 +1,18 @@ +using E2eTest.Entities; +using E2eTest.Extensions; +using E2eTestWebApp.TestPages; + +namespace E2eTest; + +[TestClass] +public class WhereTest : TestBase +{ + [TestMethod] + public async Task Where1Test() + { + var page = await this.NewPageAsync(); + await page.DeleteDatabaseAsync("Where.Where1"); + var result = await this.RunTestPageMethodAsync(p => p.Where1); + Assert.AreEqual("OK", result); + } +} diff --git a/E2eTestWebApp/TestPages/TestPageBase.razor.cs b/E2eTestWebApp/TestPages/TestPageBase.razor.cs index 08d7618..16cf2c5 100644 --- a/E2eTestWebApp/TestPages/TestPageBase.razor.cs +++ b/E2eTestWebApp/TestPages/TestPageBase.razor.cs @@ -35,12 +35,7 @@ private async Task RunAsync() } catch (Exception ex) { - this.output = JsonSerializer.Serialize(new Dictionary() - { - ["Exception"] = ex.GetType().ToString(), - ["Message"] = ex.Message, - ["StackTrace"] = ex.StackTrace ?? "", - }); + this.output = ex.ToString(); } } diff --git a/E2eTestWebApp/TestPages/WhereTestPage.cs b/E2eTestWebApp/TestPages/WhereTestPage.cs new file mode 100644 index 0000000..77c0fbd --- /dev/null +++ b/E2eTestWebApp/TestPages/WhereTestPage.cs @@ -0,0 +1,53 @@ +using Magic.IndexedDb; +using Magic.IndexedDb.Helpers; +using Microsoft.AspNetCore.Components.Rendering; +using Microsoft.AspNetCore.Components; +using System.Runtime.CompilerServices; +using System.Text.Json.Serialization; +using Magic.IndexedDb.SchemaAnnotations; +using System.Text.Json; +using System.Reflection.PortableExecutable; + +namespace E2eTestWebApp.TestPages; + +[Route("/WhereTest")] +public class WhereTestPage(IMagicDbFactory magic) : TestPageBase +{ + [MagicTable("Records", null)] + private class Record + { + [MagicPrimaryKey("Id")] + public int Id { get; set; } + + public string? StringField { get; set; } + } + + public async Task Where1() + { + var database = await magic.OpenAsync(new DbStore() + { + Name = "Where.Where1", + Version = 1, + StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] + }); + await database.AddAsync(new Record() + { + Id = 1, + StringField = "This is a string." + }); + await database.AddAsync(new Record() + { + Id = 2, + StringField = "Is this a string?" + }); + await database.AddAsync(new Record() + { + Id = 3, + StringField = "Is this a string?" + }); + var result = await database + .Where(x => x.StringField == "Is this a string?") + .ToListAsync(); + return JsonSerializer.Serialize(result.Select(x => x.Id)); + } +} \ No newline at end of file From 30ef1cdeca07b09b6cd8bc13a1a67568a86f984c Mon Sep 17 00:00:00 2001 From: yueyinqiu Date: Mon, 10 Mar 2025 15:02:28 +0800 Subject: [PATCH 2/4] try int --- E2eTestWebApp/TestPages/WhereTestPage.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/E2eTestWebApp/TestPages/WhereTestPage.cs b/E2eTestWebApp/TestPages/WhereTestPage.cs index 77c0fbd..62f11aa 100644 --- a/E2eTestWebApp/TestPages/WhereTestPage.cs +++ b/E2eTestWebApp/TestPages/WhereTestPage.cs @@ -19,7 +19,7 @@ private class Record [MagicPrimaryKey("Id")] public int Id { get; set; } - public string? StringField { get; set; } + public int Int32Field { get; set; } } public async Task Where1() @@ -30,23 +30,23 @@ public async Task Where1() Version = 1, StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] }); - await database.AddAsync(new Record() + await database.AddAsync(new Record() { Id = 1, - StringField = "This is a string." + Int32Field = 1 }); - await database.AddAsync(new Record() + await database.AddAsync(new Record() { Id = 2, - StringField = "Is this a string?" + Int32Field = 2 }); - await database.AddAsync(new Record() + await database.AddAsync(new Record() { Id = 3, - StringField = "Is this a string?" + Int32Field = 3 }); var result = await database - .Where(x => x.StringField == "Is this a string?") + .Where(x => x.Int32Field < 2) .ToListAsync(); return JsonSerializer.Serialize(result.Select(x => x.Id)); } From 0ca86e90b9067189907a83c1a47e8b90edf52241 Mon Sep 17 00:00:00 2001 From: yueyinqiu Date: Mon, 10 Mar 2025 15:47:58 +0800 Subject: [PATCH 3/4] better tests --- E2eTest/WhereTest.cs | 2 +- E2eTestWebApp/TestPages/TestPageBase.razor | 4 ++-- E2eTestWebApp/TestPages/WhereTestPage.cs | 7 +------ Magic.IndexedDb/Factories/MagicDbFactory.cs | 11 ++++++++++- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/E2eTest/WhereTest.cs b/E2eTest/WhereTest.cs index 1e01004..4fcffd1 100644 --- a/E2eTest/WhereTest.cs +++ b/E2eTest/WhereTest.cs @@ -13,6 +13,6 @@ public async Task Where1Test() var page = await this.NewPageAsync(); await page.DeleteDatabaseAsync("Where.Where1"); var result = await this.RunTestPageMethodAsync(p => p.Where1); - Assert.AreEqual("OK", result); + Assert.That.AreJsonEqual("[1,2]", result); } } diff --git a/E2eTestWebApp/TestPages/TestPageBase.razor b/E2eTestWebApp/TestPages/TestPageBase.razor index 18ef008..06b259d 100644 --- a/E2eTestWebApp/TestPages/TestPageBase.razor +++ b/E2eTestWebApp/TestPages/TestPageBase.razor @@ -3,5 +3,5 @@ - - \ No newline at end of file + + diff --git a/E2eTestWebApp/TestPages/WhereTestPage.cs b/E2eTestWebApp/TestPages/WhereTestPage.cs index 62f11aa..d31ca40 100644 --- a/E2eTestWebApp/TestPages/WhereTestPage.cs +++ b/E2eTestWebApp/TestPages/WhereTestPage.cs @@ -1,12 +1,7 @@ using Magic.IndexedDb; using Magic.IndexedDb.Helpers; -using Microsoft.AspNetCore.Components.Rendering; using Microsoft.AspNetCore.Components; -using System.Runtime.CompilerServices; -using System.Text.Json.Serialization; -using Magic.IndexedDb.SchemaAnnotations; using System.Text.Json; -using System.Reflection.PortableExecutable; namespace E2eTestWebApp.TestPages; @@ -46,7 +41,7 @@ await database.AddAsync(new Record() Int32Field = 3 }); var result = await database - .Where(x => x.Int32Field < 2) + .Where(x => x.Int32Field < 3) .ToListAsync(); return JsonSerializer.Serialize(result.Select(x => x.Id)); } diff --git a/Magic.IndexedDb/Factories/MagicDbFactory.cs b/Magic.IndexedDb/Factories/MagicDbFactory.cs index ed8fcf1..80acb65 100644 --- a/Magic.IndexedDb/Factories/MagicDbFactory.cs +++ b/Magic.IndexedDb/Factories/MagicDbFactory.cs @@ -40,10 +40,19 @@ public async ValueTask DisposeAsync() var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(10)); await module.InvokeVoidAsync(IndexedDbFunctions.CLOSE_ALL, timeout.Token); } - finally + catch + { + // do nothing + } + + try { await module.DisposeAsync(); } + catch + { + // do nothing + } } public async ValueTask OpenAsync( From ecf7797e80ab998eab51ecd44cd1cd7a3aaf4ae0 Mon Sep 17 00:00:00 2001 From: yueyinqiu Date: Mon, 10 Mar 2025 15:48:15 +0800 Subject: [PATCH 4/4] Update MagicSerializationHelper.cs --- Magic.IndexedDb/Helpers/MagicSerializationHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Magic.IndexedDb/Helpers/MagicSerializationHelper.cs b/Magic.IndexedDb/Helpers/MagicSerializationHelper.cs index 564e907..57545ed 100644 --- a/Magic.IndexedDb/Helpers/MagicSerializationHelper.cs +++ b/Magic.IndexedDb/Helpers/MagicSerializationHelper.cs @@ -72,8 +72,8 @@ public static string SerializeObject(T value, MagicJsonSerializationSettings? if (string.IsNullOrWhiteSpace(json)) throw new ArgumentException("JSON cannot be null or empty.", nameof(json)); - if (settings == null) - settings = new MagicJsonSerializationSettings(); + // if (settings == null) + // settings = new MagicJsonSerializationSettings(); var options = settings.GetOptionsWithResolver(); // Ensure correct resolver for deserialization