From 888a1b5b0ef7a9b1a20b69b3a7befa4b011d3f48 Mon Sep 17 00:00:00 2001 From: Ard van der Marel <109339598+Ard2025@users.noreply.github.com> Date: Sat, 7 Jun 2025 18:01:14 +0200 Subject: [PATCH 1/4] At least make it compillable to figure out how to make the new tests --- E2eTestWebApp/Models/IndexedDbContext.cs | 9 ++++ E2eTestWebApp/Models/Person.cs | 34 +++++++++++++++ E2eTestWebApp/Program.cs | 8 +--- E2eTestWebApp/TestPages/OpenTestPage.cs | 30 ++++++++----- .../TestPages/SingleRecordBasicTestPage.cs | 43 ++++++++++++------- E2eTestWebApp/TestPages/WhereTestPage.cs | 10 +++-- 6 files changed, 98 insertions(+), 36 deletions(-) create mode 100644 E2eTestWebApp/Models/IndexedDbContext.cs create mode 100644 E2eTestWebApp/Models/Person.cs diff --git a/E2eTestWebApp/Models/IndexedDbContext.cs b/E2eTestWebApp/Models/IndexedDbContext.cs new file mode 100644 index 0000000..bfa9460 --- /dev/null +++ b/E2eTestWebApp/Models/IndexedDbContext.cs @@ -0,0 +1,9 @@ +using Magic.IndexedDb; +using Magic.IndexedDb.Interfaces; + +namespace E2eTestWebApp.Models; + +public class IndexedDbContext : IMagicRepository +{ + public static readonly IndexedDbSet Person = new("Person"); +} \ No newline at end of file diff --git a/E2eTestWebApp/Models/Person.cs b/E2eTestWebApp/Models/Person.cs new file mode 100644 index 0000000..7f2f5bb --- /dev/null +++ b/E2eTestWebApp/Models/Person.cs @@ -0,0 +1,34 @@ +using Magic.IndexedDb; +using Magic.IndexedDb.SchemaAnnotations; + +namespace E2eTestWebApp.Models; + +public class Person : MagicTableTool, IMagicTable +{ + public int Id { get; set; } + + public IMagicCompoundKey GetKeys() => + CreatePrimaryKey(x => x.Id, true); // Auto-incrementing primary key + + public List? GetCompoundIndexes() => []; + + public string GetTableName() => "Person"; + public IndexedDbSet GetDefaultDatabase() => IndexedDbContext.Person; + + public DbSets Databases { get; } = new(); + public sealed class DbSets + { + public readonly IndexedDbSet Person = IndexedDbContext.Person; + } + + [MagicIndex] // Creates an index on this field + public string Name { get; set; } + + [MagicUniqueIndex("guid")] // Unique constraint + public Guid UniqueGuid { get; set; } = Guid.NewGuid(); + + public int Age { get; set; } + + [MagicNotMapped] // Exclude from IndexedDB schema + public string Secret { get; set; } +} \ No newline at end of file diff --git a/E2eTestWebApp/Program.cs b/E2eTestWebApp/Program.cs index ae3a29c..52f0316 100644 --- a/E2eTestWebApp/Program.cs +++ b/E2eTestWebApp/Program.cs @@ -17,12 +17,8 @@ public static async Task Main(string[] args) var builder = WebApplication.CreateBuilder(args); _ = builder.Services.AddRazorComponents().AddInteractiveServerComponents(); - _ = builder.Services.AddBlazorDB((x) => - { - x.Name = "OpenTest.RegisteredOpen1"; - x.Version = 2; - x.StoreSchemas = []; - }); + _ = builder.Services.AddMagicBlazorDB(BlazorInteropMode.WASM, true); + ; _ = builder.Services.AddSingleton(new DbStore() { Name = "OpenTest.RegisteredOpen2", diff --git a/E2eTestWebApp/TestPages/OpenTestPage.cs b/E2eTestWebApp/TestPages/OpenTestPage.cs index 74a9973..962675e 100644 --- a/E2eTestWebApp/TestPages/OpenTestPage.cs +++ b/E2eTestWebApp/TestPages/OpenTestPage.cs @@ -8,42 +8,50 @@ public class OpenTestPage(IMagicIndexedDb magic) : TestPageBase { public async Task DirectOpen() { - _ = await magic.OpenAsync(new DbStore() + /*_ = await magic.OpenAsync(new DbStore() { Name = "OpenTest.DirectOpen", Version = 1, StoreSchemas = [] }); - return "OK"; + return "OK";*/ + + return "TODO"; } public async Task RegisteredOpen1() { - _ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen1"); - return "OK"; + /*_ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen1"); + return "OK";*/ + + return "TODO"; } public async Task RegisteredOpen2() { - _ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen2"); - return "OK"; + /*_ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen2"); + return "OK";*/ + + return "TODO"; } public async Task Get() { - _ = await magic.OpenAsync(new DbStore() + /*_ = await magic.OpenAsync(new DbStore() { Name = "OpenTest.Get", Version = 1, StoreSchemas = [] }); var database = magic.Get("OpenTest.Get"); - return database.DbName; + return database.DbName;*/ + + return "TODO"; } public async Task StoreSchema() { - _ = await magic.OpenAsync(new DbStore() + /*_ = await magic.OpenAsync(new DbStore() { Name = "OpenTest.StoreSchema", Version = 1, @@ -67,6 +75,8 @@ public async Task StoreSchema() } ] }); - return "OK"; + return "OK";*/ + + return "TODO"; } } \ No newline at end of file diff --git a/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs b/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs index f604636..31951bb 100644 --- a/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs +++ b/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs @@ -9,12 +9,12 @@ namespace E2eTestWebApp.TestPages; [Route("/SingleRecordBasicTest")] public class SingleRecordBasicTestPage(IMagicIndexedDb magic) : TestPageBase { - private class NestedItem + /*private class NestedItem { public int Value { get; set; } - } + }*/ - [MagicTable("Records", null)] + /*[MagicTable("Records", null)] private class Record { [MagicPrimaryKey("id")] @@ -39,8 +39,9 @@ private class Record public NestedItem? Nested { get; set; } public long LargeNumber { get; set; } - } - static Record NewSample => new Record() + }*/ + + /*static Record NewSample => new Record() { Id = 12, Normal = "Norm", @@ -51,23 +52,25 @@ private class Record Enum = DayOfWeek.Sunday, Nested = new() { Value = 1234 }, LargeNumber = 9007199254740991 - }; + };*/ public async Task Add() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "SingleRecordBasic.Add", Version = 1, StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] }); var id = await database.AddAsync(NewSample); - return id.ToString(); + return id.ToString();*/ + + return "TODO"; } public async Task Delete() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "SingleRecordBasic.Delete", Version = 1, @@ -75,12 +78,14 @@ public async Task Delete() }); _ = await database.AddAsync(NewSample); await database.DeleteAsync(NewSample); - return "OK"; + return "OK";*/ + + return "TODO"; } public async Task Update() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "SingleRecordBasic.Update", Version = 1, @@ -91,12 +96,14 @@ public async Task Update() var updated = NewSample; updated.Normal = "Updated"; var count = await database.UpdateAsync(updated); - return count.ToString(); + return count.ToString();*/ + + return "TODO"; } public async Task GetById() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "SingleRecordBasic.GetById", Version = 1, @@ -104,12 +111,14 @@ public async Task GetById() }); var id = await database.AddAsync(NewSample); var result = await database.GetByIdAsync(id); - return result.Normal; + return result.Normal;*/ + + return "TODO"; } public async Task GetAll() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "SingleRecordBasic.GetAll", Version = 1, @@ -117,6 +126,8 @@ public async Task GetAll() }); _ = await database.AddAsync(NewSample); var result = await database.GetAllAsync(); - return JsonSerializer.Serialize(result); + return JsonSerializer.Serialize(result);*/ + + return "TODO"; } } \ No newline at end of file diff --git a/E2eTestWebApp/TestPages/WhereTestPage.cs b/E2eTestWebApp/TestPages/WhereTestPage.cs index 8f4abf2..42c0dc3 100644 --- a/E2eTestWebApp/TestPages/WhereTestPage.cs +++ b/E2eTestWebApp/TestPages/WhereTestPage.cs @@ -8,18 +8,18 @@ namespace E2eTestWebApp.TestPages; [Route("/WhereTest")] public class WhereTestPage(IMagicIndexedDb magic) : TestPageBase { - [MagicTable("Records", null)] + /*[MagicTable("Records", null)] private class Record { [MagicPrimaryKey("Id")] public int Id { get; set; } public int Int32Field { get; set; } - } + }*/ public async Task Where1() { - var database = await magic.OpenAsync(new DbStore() + /*var database = await magic.OpenAsync(new DbStore() { Name = "Where.Where1", Version = 1, @@ -43,6 +43,8 @@ await database.AddAsync(new Record() var result = await database .Where(x => x.Int32Field < 3) .ToListAsync(); - return JsonSerializer.Serialize(result.Select(x => x.Id)); + return JsonSerializer.Serialize(result.Select(x => x.Id));*/ + + return "TODO"; } } \ No newline at end of file From 66e82152c3d4dd1cda0e9d8d4b961c4e6112e618 Mon Sep 17 00:00:00 2001 From: Ard van der Marel <109339598+Ard2025@users.noreply.github.com> Date: Mon, 9 Jun 2025 11:10:30 +0200 Subject: [PATCH 2/4] DirectOpenTest is working --- E2eTest/OpenTest.cs | 7 +++++-- E2eTestWebApp/Program.cs | 5 +---- E2eTestWebApp/TestPages/OpenTestPage.cs | 13 ++++--------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/E2eTest/OpenTest.cs b/E2eTest/OpenTest.cs index 261b69a..789b219 100644 --- a/E2eTest/OpenTest.cs +++ b/E2eTest/OpenTest.cs @@ -1,6 +1,8 @@ using E2eTest.Entities; using E2eTest.Extensions; +using E2eTestWebApp.Models; using E2eTestWebApp.TestPages; +using Magic.IndexedDb; namespace E2eTest; @@ -10,8 +12,9 @@ public class OpenTest : TestBase [TestMethod] public async Task DirectOpenTest() { + var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("OpenTest.DirectOpen"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.DirectOpen); Assert.AreEqual("OK", result); @@ -19,7 +22,7 @@ public async Task DirectOpenTest() var databases = await page.EvaluateAsync("indexedDB.databases()"); // The actual version will be 10: // https://dexie.org/docs/Dexie/Dexie.version() - Assert.IsTrue(databases!.Any(x => x.Name == "OpenTest.DirectOpen" && x.Version == 10)); + Assert.IsTrue(databases!.Any(x => x.Name == "Person" && x.Version == 10)); } [TestMethod] diff --git a/E2eTestWebApp/Program.cs b/E2eTestWebApp/Program.cs index 52f0316..1197ba5 100644 --- a/E2eTestWebApp/Program.cs +++ b/E2eTestWebApp/Program.cs @@ -16,17 +16,14 @@ public static async Task Main(string[] args) var builder = WebApplication.CreateBuilder(args); _ = builder.Services.AddRazorComponents().AddInteractiveServerComponents(); - _ = builder.Services.AddMagicBlazorDB(BlazorInteropMode.WASM, true); - ; _ = builder.Services.AddSingleton(new DbStore() { Name = "OpenTest.RegisteredOpen2", Version = 3, StoreSchemas = [] }); - - + var app = builder.Build(); _ = app.UseExceptionHandler("/Error", createScopeForErrors: true); _ = app.UseAntiforgery(); diff --git a/E2eTestWebApp/TestPages/OpenTestPage.cs b/E2eTestWebApp/TestPages/OpenTestPage.cs index 962675e..8dbb8f5 100644 --- a/E2eTestWebApp/TestPages/OpenTestPage.cs +++ b/E2eTestWebApp/TestPages/OpenTestPage.cs @@ -1,3 +1,4 @@ +using E2eTestWebApp.Models; using Magic.IndexedDb; using Microsoft.AspNetCore.Components; @@ -8,15 +9,9 @@ public class OpenTestPage(IMagicIndexedDb magic) : TestPageBase { public async Task DirectOpen() { - /*_ = await magic.OpenAsync(new DbStore() - { - Name = "OpenTest.DirectOpen", - Version = 1, - StoreSchemas = [] - }); - return "OK";*/ - - return "TODO"; + var connection = await magic.Database(IndexedDbContext.Person); + await connection.OpenAsync(); + return "OK"; } public async Task RegisteredOpen1() From 62186aefdec9446f54459c096b23adb14ceb5adf Mon Sep 17 00:00:00 2001 From: Ard van der Marel <109339598+Ard2025@users.noreply.github.com> Date: Sun, 15 Jun 2025 08:58:30 +0200 Subject: [PATCH 3/4] Remove RegisteredOpen1 because they are to test the caracteristics of the old db versioning system --- E2eTest/OpenTest.cs | 30 ------------------------- E2eTestWebApp/TestPages/OpenTestPage.cs | 16 ------------- 2 files changed, 46 deletions(-) diff --git a/E2eTest/OpenTest.cs b/E2eTest/OpenTest.cs index 789b219..d938f1d 100644 --- a/E2eTest/OpenTest.cs +++ b/E2eTest/OpenTest.cs @@ -25,36 +25,6 @@ public async Task DirectOpenTest() Assert.IsTrue(databases!.Any(x => x.Name == "Person" && x.Version == 10)); } - [TestMethod] - public async Task RegisteredOpenTest1() - { - var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("OpenTest.RegisteredOpen1"); - - var result = await this.RunTestPageMethodAsync(p => p.RegisteredOpen1); - Assert.AreEqual("OK", result); - - var databases = await page.EvaluateAsync("indexedDB.databases()"); - // The actual version will be 20: - // https://dexie.org/docs/Dexie/Dexie.version() - Assert.IsTrue(databases!.Any(x => x.Name == "OpenTest.RegisteredOpen1" && x.Version == 20)); - } - - [TestMethod] - public async Task RegisteredOpenTest2() - { - var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("OpenTest.RegisteredOpen2"); - - var result = await this.RunTestPageMethodAsync(p => p.RegisteredOpen2); - Assert.AreEqual("OK", result); - - var databases = await page.EvaluateAsync("indexedDB.databases()"); - // The actual version will be 30: - // https://dexie.org/docs/Dexie/Dexie.version() - Assert.IsTrue(databases!.Any(x => x.Name == "OpenTest.RegisteredOpen2" && x.Version == 30)); - } - [TestMethod] public async Task GetTest() { diff --git a/E2eTestWebApp/TestPages/OpenTestPage.cs b/E2eTestWebApp/TestPages/OpenTestPage.cs index 8dbb8f5..f0a4c34 100644 --- a/E2eTestWebApp/TestPages/OpenTestPage.cs +++ b/E2eTestWebApp/TestPages/OpenTestPage.cs @@ -14,22 +14,6 @@ public async Task DirectOpen() return "OK"; } - public async Task RegisteredOpen1() - { - /*_ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen1"); - return "OK";*/ - - return "TODO"; - } - - public async Task RegisteredOpen2() - { - /*_ = await magic.GetRegisteredAsync("OpenTest.RegisteredOpen2"); - return "OK";*/ - - return "TODO"; - } - public async Task Get() { /*_ = await magic.OpenAsync(new DbStore() From f44f959193633828ca6624169fc532c14a408d6d Mon Sep 17 00:00:00 2001 From: Ard van der Marel <109339598+Ard2025@users.noreply.github.com> Date: Sun, 15 Jun 2025 09:26:38 +0200 Subject: [PATCH 4/4] Port some more tests --- E2eTest/OpenTest.cs | 5 +- E2eTest/SingleRecordBasicTest.cs | 82 ++--------- E2eTest/WhereTest.cs | 4 +- E2eTestWebApp/TestPages/OpenTestPage.cs | 1 + .../TestPages/SingleRecordBasicTestPage.cs | 129 ++++-------------- E2eTestWebApp/TestPages/WhereTestPage.cs | 36 ++--- 6 files changed, 48 insertions(+), 209 deletions(-) diff --git a/E2eTest/OpenTest.cs b/E2eTest/OpenTest.cs index d938f1d..e90740f 100644 --- a/E2eTest/OpenTest.cs +++ b/E2eTest/OpenTest.cs @@ -25,6 +25,9 @@ public async Task DirectOpenTest() Assert.IsTrue(databases!.Any(x => x.Name == "Person" && x.Version == 10)); } + + /* + // TODO: port scema test to magicDB v2 [TestMethod] public async Task GetTest() { @@ -66,5 +69,5 @@ public async Task StoreSchemaTest() } } """, storeSchema); - } + }*/ } diff --git a/E2eTest/SingleRecordBasicTest.cs b/E2eTest/SingleRecordBasicTest.cs index ade0d14..d15e7b5 100644 --- a/E2eTest/SingleRecordBasicTest.cs +++ b/E2eTest/SingleRecordBasicTest.cs @@ -10,105 +10,39 @@ public class SingleRecordBasicTest : TestBase public async Task AddTest() { var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("SingleRecordBasic.Add"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.Add); - Assert.AreEqual("12", result); - var records = await page.EvaluateAsync("getAll('SingleRecordBasic.Add', 'Records')"); - - // TODO: - // Ignored should not exist here - // the property of Nested should be "Value" rather than "value" - Assert.That.AreJsonEqual(""" - [ - { - "id":12, - "Normal":"Norm", - "Renamed":"R", - "Index":"I", - "UniqueIndex":"633a97d2-0c92-4c68-883b-364f94ad6030", - "Enum":0, - "Nested":{"value":1234}, - "LargeNumber":9007199254740991 - } - ] - """, records); + Assert.AreEqual(result, "OK"); } [TestMethod] public async Task DeleteTest() { var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("SingleRecordBasic.Delete"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.Delete); - Assert.AreEqual("OK", result); - - var records = await page.EvaluateAsync("getAll('SingleRecordBasic.Delete', 'Records')"); - Assert.That.AreJsonEqual("[]", records); + Assert.AreEqual(result, "OK"); } [TestMethod] public async Task UpdateTest() { var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("SingleRecordBasic.Update"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.Update); - Assert.AreEqual("1", result); - - var records = await page.EvaluateAsync("getAll('SingleRecordBasic.Update', 'Records')"); - - // TODO: - // Ignored should not exist here - // the property of Nested should be "Value" rather than "value" - Assert.That.AreJsonEqual(""" - [ - { - "id":12, - "Normal":"Updated", - "Renamed":"R", - "Index":"I", - "UniqueIndex":"633a97d2-0c92-4c68-883b-364f94ad6030", - "Enum":0, - "Nested":{"value":1234}, - "LargeNumber":9007199254740991 - } - ] - """, records); - } - - [TestMethod] - public async Task GetByIdTest() - { - var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("SingleRecordBasic.GetById"); - - var result = await this.RunTestPageMethodAsync(p => p.GetById); - Assert.AreEqual("Norm", result); + Assert.AreEqual(result, "OK"); } [TestMethod] public async Task GetAllTest() { var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("SingleRecordBasic.GetAll"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.GetAll); - - // Nested.Value should be 1234 - Assert.That.AreJsonEqual(""" - [{ - "Id":12, - "Normal":"Norm", - "ShouldBeRenamed":"R", - "Ignored":false, - "Index":"I", - "UniqueIndex":"633a97d2-0c92-4c68-883b-364f94ad6030", - "Enum":0, - "Nested":{"Value":1234}, - "LargeNumber":9007199254740991 - }] - """, result); + Assert.AreEqual(result, "OK"); } } diff --git a/E2eTest/WhereTest.cs b/E2eTest/WhereTest.cs index 13643b3..b09f4cf 100644 --- a/E2eTest/WhereTest.cs +++ b/E2eTest/WhereTest.cs @@ -10,8 +10,8 @@ public class WhereTest : TestBase public async Task Where1Test() { var page = await this.NewPageAsync(); - await page.DeleteDatabaseAsync("Where.Where1"); + await page.DeleteDatabaseAsync("Person"); var result = await this.RunTestPageMethodAsync(p => p.Where1); - Assert.That.AreJsonEqual("[1,2]", result); + Assert.AreEqual(result, "OK"); } } diff --git a/E2eTestWebApp/TestPages/OpenTestPage.cs b/E2eTestWebApp/TestPages/OpenTestPage.cs index f0a4c34..4228e69 100644 --- a/E2eTestWebApp/TestPages/OpenTestPage.cs +++ b/E2eTestWebApp/TestPages/OpenTestPage.cs @@ -30,6 +30,7 @@ public async Task Get() public async Task StoreSchema() { + var connection = await magic.Query(); /*_ = await magic.OpenAsync(new DbStore() { Name = "OpenTest.StoreSchema", diff --git a/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs b/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs index 31951bb..9dd9d36 100644 --- a/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs +++ b/E2eTestWebApp/TestPages/SingleRecordBasicTestPage.cs @@ -3,131 +3,50 @@ using Microsoft.AspNetCore.Components; using Magic.IndexedDb.SchemaAnnotations; using System.Text.Json; +using E2eTestWebApp.Models; namespace E2eTestWebApp.TestPages; [Route("/SingleRecordBasicTest")] public class SingleRecordBasicTestPage(IMagicIndexedDb magic) : TestPageBase { - /*private class NestedItem - { - public int Value { get; set; } - }*/ - - /*[MagicTable("Records", null)] - private class Record - { - [MagicPrimaryKey("id")] - public int Id { get; set; } - - public string? Normal { get; set; } - - [MagicNotMapped] - public bool Ignored { get; set; } - - [MagicIndex("Renamed")] - public char ShouldBeRenamed { get; set; } - - [MagicIndex] - public string? Index { get; set; } - - [MagicIndex] - public Guid UniqueIndex { get; set; } - - public DayOfWeek Enum { get; set; } - - public NestedItem? Nested { get; set; } - - public long LargeNumber { get; set; } - }*/ - - /*static Record NewSample => new Record() - { - Id = 12, - Normal = "Norm", - Ignored = true, - ShouldBeRenamed = 'R', - Index = "I", - UniqueIndex = Guid.Parse("633A97D2-0C92-4C68-883B-364F94AD6030"), - Enum = DayOfWeek.Sunday, - Nested = new() { Value = 1234 }, - LargeNumber = 9007199254740991 - };*/ - public async Task Add() { - /*var database = await magic.OpenAsync(new DbStore() - { - Name = "SingleRecordBasic.Add", - Version = 1, - StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] - }); - var id = await database.AddAsync(NewSample); - return id.ToString();*/ - - return "TODO"; + var db = await magic.Query(); + await db.AddAsync(new Person { Age = 20, Name = "John" }); + var results = await db.ToListAsync(); + + return results.Count == 1 ? "OK" : "Incorrect"; } public async Task Delete() { - /*var database = await magic.OpenAsync(new DbStore() - { - Name = "SingleRecordBasic.Delete", - Version = 1, - StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] - }); - _ = await database.AddAsync(NewSample); - await database.DeleteAsync(NewSample); - return "OK";*/ - - return "TODO"; + var db = await magic.Query(); + await db.AddAsync(new Person { Id = 1, Age = 20, Name = "John" }); + await db.DeleteAsync(new Person {Id = 1, Age = 20, Name = "John" }); + var results = await db.ToListAsync(); + + return results.Count == 0 ? "OK" : "Incorrect"; } public async Task Update() { - /*var database = await magic.OpenAsync(new DbStore() - { - Name = "SingleRecordBasic.Update", - Version = 1, - StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] - }); - _ = await database.AddAsync(NewSample); + var db = await magic.Query(); + await db.AddAsync(new Person { Id = 1, Age = 20, Name = "John" }); + await db.UpdateAsync(new Person { Id = 1, Age = 25, Name = "John" }); + var results = await db.ToListAsync(); - var updated = NewSample; - updated.Normal = "Updated"; - var count = await database.UpdateAsync(updated); - return count.ToString();*/ - - return "TODO"; - } - - public async Task GetById() - { - /*var database = await magic.OpenAsync(new DbStore() - { - Name = "SingleRecordBasic.GetById", - Version = 1, - StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] - }); - var id = await database.AddAsync(NewSample); - var result = await database.GetByIdAsync(id); - return result.Normal;*/ - - return "TODO"; + return results.First().Age == 25 ? "OK" : "Incorrect"; } public async Task GetAll() { - /*var database = await magic.OpenAsync(new DbStore() - { - Name = "SingleRecordBasic.GetAll", - Version = 1, - StoreSchemas = [SchemaHelper.GetStoreSchema(typeof(Record))] - }); - _ = await database.AddAsync(NewSample); - var result = await database.GetAllAsync(); - return JsonSerializer.Serialize(result);*/ - - return "TODO"; + var db = await magic.Query(); + await db.AddAsync(new Person { Age = 20, Name = "John" }); + await db.AddAsync(new Person { Age = 25, Name = "Peter" }); + await db.AddAsync(new Person { Age = 35, Name = "Bert" }); + var results = await db.ToListAsync(); + + return results.Count == 3 ? "OK" : "Incorrect"; } } \ No newline at end of file diff --git a/E2eTestWebApp/TestPages/WhereTestPage.cs b/E2eTestWebApp/TestPages/WhereTestPage.cs index 42c0dc3..350a21b 100644 --- a/E2eTestWebApp/TestPages/WhereTestPage.cs +++ b/E2eTestWebApp/TestPages/WhereTestPage.cs @@ -2,6 +2,7 @@ using Magic.IndexedDb.Helpers; using Microsoft.AspNetCore.Components; using System.Text.Json; +using E2eTestWebApp.Models; namespace E2eTestWebApp.TestPages; @@ -19,32 +20,13 @@ private class Record 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, - Int32Field = 1 - }); - await database.AddAsync(new Record() - { - Id = 2, - Int32Field = 2 - }); - await database.AddAsync(new Record() - { - Id = 3, - Int32Field = 3 - }); - var result = await database - .Where(x => x.Int32Field < 3) - .ToListAsync(); - return JsonSerializer.Serialize(result.Select(x => x.Id));*/ - - return "TODO"; + var db = await magic.Query(); + await db.AddAsync(new Person { Age = 20, Name = "John" }); + await db.AddAsync(new Person { Age = 25, Name = "Peter" }); + await db.AddAsync(new Person { Age = 35, Name = "Bert" }); + + var results = await db.Where(p => p.Age < 30).ToListAsync(); + + return results.Count == 2 ? "OK" : "Incorrect"; } } \ No newline at end of file