Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ba5ffb5
feat: start development cycle for 0.0.10-alpha
ReneSchwarzer Oct 31, 2025
86f1466
feat: general improvements and minor bugs
ReneSchwarzer Nov 2, 2025
733bc2c
feat: switch to .net10.0
ReneSchwarzer Nov 15, 2025
36cac73
feat: general improvements and minor bugs
ReneSchwarzer Nov 16, 2025
3b5764a
fix: general improvements and minor bugs
ReneSchwarzer Nov 20, 2025
f072ede
fix: general improvements and minor bugs
ReneSchwarzer Nov 23, 2025
3de6831
feat: general improvements and minor bugs
ReneSchwarzer Nov 23, 2025
2efcf7e
refactor: REST API layer
ReneSchwarzer Dec 14, 2025
c57268c
add: websocket support
ReneSchwarzer Dec 23, 2025
3ad2f2d
add: websocket protocol
ReneSchwarzer Dec 25, 2025
3034345
refactor: websocket protocol
ReneSchwarzer Dec 26, 2025
0a50b23
refactor: websocket protocol
ReneSchwarzer Dec 27, 2025
0f1dcb4
add: message queue, general improvements and minor bugs
ReneSchwarzer Dec 28, 2025
6714b15
update: new signature icon
ReneSchwarzer Dec 29, 2025
1be2bf0
chore: temporary folder rename to enforce case change
ReneSchwarzer Dec 30, 2025
97a0f1b
chore: temporary folder rename to enforce case change
ReneSchwarzer Dec 30, 2025
c013699
feat: general improvements and minor bugs
ReneSchwarzer Dec 31, 2025
5358129
feat: improved message queue and minor bugs
ReneSchwarzer Jan 1, 2026
558fc73
feat: general improvements and minor bugs
ReneSchwarzer Jan 2, 2026
9daec52
feat: general improvements and minor bugs
ReneSchwarzer Jan 2, 2026
072d9f3
feat: improved crud api and minor bugs
ReneSchwarzer Jan 2, 2026
3602982
feat: general improvements and minor bugs
ReneSchwarzer Jan 4, 2026
f8630a7
feat: add tag template for rest table, general improvements and minor…
ReneSchwarzer Jan 4, 2026
861c63e
feat: general improvements and minor bugs
ReneSchwarzer Jan 12, 2026
ca200c4
chord: bring test comments into harmony
ReneSchwarzer Jan 18, 2026
52e5771
feat: general improvements and minor bugs
ReneSchwarzer Jan 25, 2026
792c31e
feat: general improvements and minor bugs
ReneSchwarzer Jan 25, 2026
9414181
feat: general improvements and minor bugs
ReneSchwarzer Jan 31, 2026
ee7c747
feat: simplified request pipeline, improved query handling, unified f…
ReneSchwarzer Feb 1, 2026
13e8366
feat: add wql prompt control, general improvements and minor bugs
ReneSchwarzer Feb 2, 2026
862328c
feat: general improvements and minor bugs
ReneSchwarzer Feb 3, 2026
89dfa28
feat: general improvements and minor bugs
ReneSchwarzer Feb 9, 2026
6b7fc5d
feat: replace modal properties with primary/secondary action model
ReneSchwarzer Feb 11, 2026
ff532e1
feat: id generation to deterministic or random id providers
ReneSchwarzer Feb 15, 2026
51692c1
feat: improved wql parrser and minor bugs
ReneSchwarzer Feb 21, 2026
b90ac7e
feat: general improvements and minor bugs
ReneSchwarzer Feb 25, 2026
bfb46cf
feat: general improvements and minor bugs
ReneSchwarzer Mar 1, 2026
245368a
feat: refactor parameter, general improvements and minor bugs
ReneSchwarzer Mar 3, 2026
aad31e8
feat: general improvements and minor bugs
ReneSchwarzer Mar 4, 2026
4b73ccf
feat: general improvements and minor bugs
ReneSchwarzer Mar 5, 2026
bff4f1e
feat: general improvements and minor bugs
ReneSchwarzer Mar 6, 2026
2223025
feat: add tab control, general improvements and minor bugs
ReneSchwarzer Mar 25, 2026
93f489d
feat: general improvements and minor bugs
ReneSchwarzer Mar 27, 2026
5dd9848
feat: add dashboard control, general improvements and minor bugs
ReneSchwarzer Mar 28, 2026
f068d0c
feat: general improvements and minor bugs
ReneSchwarzer Apr 1, 2026
ca4f893
Initial plan
Copilot Apr 2, 2026
61d52b2
Fix review comments from PR #10: null safety, typos, cookie parsing, …
Copilot Apr 2, 2026
a7d5c72
Merge pull request #11 from webexpress-framework/copilot/update-readm…
ReneSchwarzer Apr 2, 2026
0ebf158
feat: general improvements and minor bugs
ReneSchwarzer Apr 4, 2026
0c1db49
feat: general improvements and minor bugs
ReneSchwarzer Apr 4, 2026
2b25cc9
feat: general improvements and minor bugs
ReneSchwarzer Apr 4, 2026
8e68ef2
Initial plan
Copilot Apr 4, 2026
b437f45
Fix ResponseHeaderFields.ToString() to use Connection property instea…
Copilot Apr 4, 2026
10c27cb
Merge pull request #12 from webexpress-framework/copilot/update-docum…
ReneSchwarzer Apr 4, 2026
aa4e888
feat: general improvements and minor bugs
ReneSchwarzer Apr 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: UnitTests
name: UnitTest-Verification

on:
workflow_dispatch:
Expand All @@ -10,14 +10,17 @@ on:
jobs:
build-and-test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: src
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 9.x
dotnet-version: 10.x

- name: Restore dependencies
run: dotnet restore
Expand Down
Binary file modified icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 11 additions & 3 deletions src/WebExpress.WebCore.Test/Fixture/AssertExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ public static partial class AssertExtensions
/// <param name="actual">The actual string to compare.</param>
public static void EqualWithPlaceholders(string expected, string actual)
{
if (expected is null && actual is null)
{
return;
}

Assert.NotNull(expected);
Assert.NotNull(actual);

var str = RemoveLineBreaks(actual?.ToString());
Assert.True(AreEqualWithPlaceholders(expected, str), $"Expected: {expected}{Environment.NewLine}Actual: {str}");
}
Expand All @@ -47,15 +55,15 @@ public static void EqualWithPlaceholders(string expected, IHtmlNode actual)
/// <returns>True if the actual string matches the expected string with placeholders; otherwise, false.</returns>
private static bool AreEqualWithPlaceholders(string expected, string actual)
{
if (expected == null && actual == null)
if (expected is null && actual is null)
{
return true;
}
else if (expected != null && actual == null)
else if (expected is not null && actual is null)
{
return false;
}
else if (expected == null && actual != null)
else if (expected is null && actual is not null)
{
return false;
}
Expand Down
23 changes: 21 additions & 2 deletions src/WebExpress.WebCore.Test/Fixture/UnitTestFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public static ComponentHub CreateAndRegisterComponentHubMock()
/// <param name="content">The content of the request.</param>
/// <param name="uri">The URI of the request.</param>
/// <returns>A fake request for testing.</returns>
public static Request CrerateRequestMock(string content = "", string uri = "")
public static IRequest CreateRequestMock(string content = "", string uri = "")
{
var context = CreateHttpContextMock(content);

Expand All @@ -112,6 +112,25 @@ public static Request CrerateRequestMock(string content = "", string uri = "")
return request;
}

/// <summary>
/// Create a fake request.
/// </summary>
/// <param name="uri">The URI of the request.</param>
/// <returns>A fake request for testing.</returns>
public static IRequest CreateRequestMock(IUri uri)
{
var context = CreateHttpContextMock();

var request = context.Request;

if (uri is not null)
{
request.Uri = uri as UriEndpoint;
}

return request;
}

/// <summary>
/// Create a fake http context.
/// </summary>
Expand Down Expand Up @@ -191,7 +210,7 @@ public static WebMessage.HttpContext CreateHttpContextMock(string content = "")
/// <returns>A mock render context for testing.</returns>
public static RenderContext CrerateRenderContextMock(IApplicationContext applicationContext = null, IEnumerable<Type> scopes = null)
{
var request = CrerateRequestMock();
var request = CreateRequestMock();

return new RenderContext(null, CreratePageContextMock(applicationContext, scopes), request);
}
Expand Down
83 changes: 83 additions & 0 deletions src/WebExpress.WebCore.Test/Html/UnitTestDeterministicId.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
using WebExpress.WebCore.WebHtml;

namespace WebExpress.WebCore.Test.Html
{
/// <summary>
/// Unit tests for the DeterministicId class.
/// </summary>
[Collection("NonParallelTests")]
public class UnitTestDeterministicId
{
/// <summary>
/// Tests the create method.
/// </summary>
[Fact]
public void CreateSameCallsite()
{
// act
var id1 = CallCreate();
var id2 = CallCreate();

// validation
Assert.NotEqual(id1, id2);
}

/// <summary>
/// Tests the create method.
/// </summary>
[Fact]
public void CreateIndexes()
{
// act
var id1 = CallCreate(0);
var id2 = CallCreate(1);

// validation
Assert.NotEqual(id1, id2);
}

/// <summary>
/// Tests the create method.
/// </summary>
[Fact]
public void CreateDifferentCallsites()
{
// arrange
var CallsiteA = new Func<string>(() => CallCreate());
var CallsiteB = new Func<string>(() => CallCreate());

// act
var id1 = CallsiteA();
var id2 = CallsiteB();

// validation
Assert.NotEqual(id1, id2);
}


/// <summary>
/// Generates a deterministic identifier.
/// <returns>
/// A string that represents the generated deterministic identifier.
/// </returns>
private string CallCreate()
{
return DeterministicId.Create();
}

/// <summary>
/// Generates a deterministic identifier based on the specified index.
/// </summary>
/// <param name="contet">
/// The optional content used to influence the generated identifier. If
/// null, a default identifier is created.
/// </param>
/// <returns>
/// A string that represents the generated deterministic identifier.
/// </returns>
private string CallCreate(object contet = null)
{
return DeterministicId.Create(contet);
}
}
}
44 changes: 22 additions & 22 deletions src/WebExpress.WebCore.Test/Html/UnitTestHtmlElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ public class UnitTestHtmlElement
[Fact]
public void FindSingel()
{
// preconditions
// arrange
var html = new HtmlElementTextContentDiv
(
new HtmlElementTextSemanticsI(),
new HtmlElementTextSemanticsU(new HtmlElementTextSemanticsSpan()),
new HtmlElementTextSemanticsB()
);

// test execution
// act
var res = html.Find(x => x is HtmlElementTextSemanticsSpan).FirstOrDefault();

// validation
Expand All @@ -35,7 +35,7 @@ public void FindSingel()
[Fact]
public void Find()
{
// preconditions
// arrange
var html = new HtmlElement[]
{
new HtmlElementTextContentDiv
Expand All @@ -47,7 +47,7 @@ public void Find()
new HtmlElementMultimediaImg()
};

// test execution
// act
var res = html.Find(x => x is HtmlElementTextSemanticsSpan).FirstOrDefault();

// validation
Expand All @@ -60,10 +60,10 @@ public void Find()
[Fact]
public void AddClassTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();

// test execution
// act
div.AddClass("test-class");

// validation
Expand All @@ -76,11 +76,11 @@ public void AddClassTest()
[Fact]
public void RemoveClassTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();
div.AddClass("test-class");

// test execution
// act
div.RemoveClass("test-class");

// validation
Expand All @@ -93,10 +93,10 @@ public void RemoveClassTest()
[Fact]
public void AddStyleTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();

// test execution
// act
div.AddStyle("color:red;");

// validation
Expand All @@ -109,11 +109,11 @@ public void AddStyleTest()
[Fact]
public void RemoveStyleTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();
div.AddStyle("color", "red");

// test execution
// act
div.RemoveStyle("color");

// validation
Expand All @@ -126,10 +126,10 @@ public void RemoveStyleTest()
[Fact]
public void AddMultipleClassesTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();

// test execution
// act
div.AddClass("class1");
div.AddClass("class2");

Expand All @@ -143,12 +143,12 @@ public void AddMultipleClassesTest()
[Fact]
public void RemoveOneOfMultipleClassesTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();
div.AddClass("class1");
div.AddClass("class2");

// test execution
// act
div.RemoveClass("class1");

// validation
Expand All @@ -162,10 +162,10 @@ public void RemoveOneOfMultipleClassesTest()
[Fact]
public void AddMultipleStylesTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();

// test execution
// act
div.AddStyle("color:red;");
div.AddStyle("background:blue;");

Expand All @@ -180,12 +180,12 @@ public void AddMultipleStylesTest()
[Fact]
public void RemoveOneOfMultipleStylesTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();
div.AddStyle("color:red;");
div.AddStyle("background:blue;");

// test execution
// act
div.RemoveStyle("color:red;");

// validation
Expand All @@ -199,7 +199,7 @@ public void RemoveOneOfMultipleStylesTest()
[Fact]
public void ToStringEmptyDivTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv();

// validation
Expand All @@ -212,7 +212,7 @@ public void ToStringEmptyDivTest()
[Fact]
public void ToStringWithChildrenTest()
{
// preconditions
// arrange
var div = new HtmlElementTextContentDiv(
new HtmlElementTextSemanticsB(),
new HtmlElementTextSemanticsI()
Expand Down
Loading
Loading