From 07fcf131c09022aac09e0f2b624bbd33008c43c4 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 01:08:10 -0800 Subject: [PATCH 01/11] initial commit --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/README.md b/README.md index 0b662f4..1956ed5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,72 @@ # aspect-assertion Fluent Assertion aspect oriented library +# Goodtocode.Assertion + +**CI/CD Build Status** + +[![.github/workflows/ci-cd.yml](https://github.com/goodtocode/aspect-assertion/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/goodtocode/aspect-assertion/actions/workflows/ci-cd.yml) + +Goodtocode.Assertion is a .NET library providing fluent assertion and validation utilities for C# projects. It enables developers to write expressive, readable, and maintainable assertions for business logic, unit tests, and runtime validation. The library is designed for extensibility and can be integrated into any .NET project. + +## Features +* Fluent assertion syntax for clear, readable code +* Customizable assertion rules and exception handling +* Assertion scopes for grouping related checks +* Lightweight, dependency-free, and compatible with .NET Standard 2.0+ and .NET 9 +* Designed for use in both production code and unit tests + +## Quick-Start Steps +1. Clone this repository + ``` + git clone https://github.com/goodtocode/aspect-assertion.git + ``` +2. Install .NET SDK (9.0 or compatible) + ``` + winget install Microsoft.DotNet.SDK.9 --silent + ``` +3. Build the solution + ``` + cd src + dotnet build Goodtocode.Assertion.sln + ``` +4. Run tests + ``` + cd Goodtocode.Assertion.Tests + dotnet test + ``` + +## Install Prerequisites +* [.NET SDK 9+](https://dotnet.microsoft.com/en-us/download) +* Visual Studio 2022 or VS Code + +## Usage Example +```csharp +using Goodtocode.Assertion; + +public void Example() +{ + int value = 5; + AssertionScope.Begin() + .Assert(() => value > 0, "Value must be positive.") + .Assert(() => value < 10, "Value must be less than 10.") + .End(); +} +``` + +## Technologies +* [C# .NET](https://docs.microsoft.com/en-us/dotnet/csharp/) +* [.NET Standard](https://docs.microsoft.com/en-us/dotnet/standard/) + +## Version History + +| Version | Date | Release Notes | +|---------|-------------|--------------------------------------------------| +| 1.0.0 | 2026-Jan-19 | Initial release | + +## License + +This project is licensed with the [MIT license](https://mit-license.org/). + +## Contact +* [GitHub Repo](https://github.com/goodtocode/aspect-assertion) +* [@goodtocode](https://twitter.com/goodtocode) From 2e4542a674318b539b804ff6cf7f1868a9f249f6 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 01:16:10 -0800 Subject: [PATCH 02/11] set ci/cd to fire at post PR push --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index 29e0636..82a8f31 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -31,8 +31,8 @@ jobs: ci: name: 'CI Build, Test, Code QL, Publish' runs-on: ubuntu-latest - if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' - environment: development + if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' || github.event_name == 'push' + environment: development strategy: matrix: DOTNET_VERSION: ['9.x'] @@ -92,14 +92,13 @@ jobs: if: ${{ always() }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@v3 cd: name: 'CD Pack and Publish to NuGet.org' runs-on: ubuntu-latest needs: ci - if: | - github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + if: github.event_name == 'push' && github.ref == 'refs/heads/main' environment: production strategy: matrix: From 35b1a52c9b2646214dee450b1bbcd6f0a16c9b7a Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 01:18:00 -0800 Subject: [PATCH 03/11] testing on feature branch --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index 82a8f31..5d97434 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -3,13 +3,13 @@ name: CI/CD Build, Test and Deploy on: pull_request: branches: - - main + - 3-deployment-must-happen-on-complete paths: - .github/workflows/gtc-assertion-nuget.yml - src/** push: branches: - - main + - 3-deployment-must-happen-on-complete paths: - .github/workflows/gtc-assertion-nuget.yml - src/** @@ -98,7 +98,7 @@ jobs: name: 'CD Pack and Publish to NuGet.org' runs-on: ubuntu-latest needs: ci - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + if: github.event_name == 'push' && github.ref == 'refs/heads/3-deployment-must-happen-on-complete' environment: production strategy: matrix: From 96b554fbc702c44faec53cb1d2e49c29b70bb2f3 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 01:18:39 -0800 Subject: [PATCH 04/11] format --- .../workflows/gtc-assertion-ci-cd-nuget.yml | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index 5d97434..a7c6f5c 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -9,18 +9,18 @@ on: - src/** push: branches: - - 3-deployment-must-happen-on-complete + - 3-deployment-must-happen-on-complete paths: - - .github/workflows/gtc-assertion-nuget.yml - - src/** + - .github/workflows/gtc-assertion-nuget.yml + - src/** workflow_dispatch: inputs: environment: - description: 'Environment to run' + description: "Environment to run" required: true - default: 'development' + default: "development" mode: - description: 'Running mode' + description: "Running mode" permissions: id-token: write @@ -29,23 +29,23 @@ permissions: jobs: ci: - name: 'CI Build, Test, Code QL, Publish' + name: "CI Build, Test, Code QL, Publish" runs-on: ubuntu-latest if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' || github.event_name == 'push' environment: development strategy: matrix: - DOTNET_VERSION: ['9.x'] - - env: - RUNTIME_ENV: 'Development' - SRC_PATH: './src' - SRC_SLN: 'Goodtocode.Assertion.sln' - PROJECT_PATH: 'Goodtocode.Assertion' - PROJECT_FILE: 'Goodtocode.Assertion.csproj' - TEST_PATH: 'Goodtocode.Assertion.Tests' - TEST_PROJECT: 'Goodtocode.Assertion.Tests.csproj' - SCRIPTS_PATH: './.github/scripts' + DOTNET_VERSION: ["9.x"] + + env: + RUNTIME_ENV: "Development" + SRC_PATH: "./src" + SRC_SLN: "Goodtocode.Assertion.sln" + PROJECT_PATH: "Goodtocode.Assertion" + PROJECT_FILE: "Goodtocode.Assertion.csproj" + TEST_PATH: "Goodtocode.Assertion.Tests" + TEST_PROJECT: "Goodtocode.Assertion.Tests.csproj" + SCRIPTS_PATH: "./.github/scripts" steps: - name: checkout @@ -67,15 +67,15 @@ jobs: run: | echo "ASPNETCORE_ENVIRONMENT=${{ env.RUNTIME_ENV }}" >> $GITHUB_ENV shell: pwsh - + - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: languages: csharp - + - name: Build run: | - dotnet build ${{ env.SRC_PATH }}/${{ env.SRC_SLN }} --configuration Release + dotnet build ${{ env.SRC_PATH }}/${{ env.SRC_SLN }} --configuration Release shell: pwsh - name: Test @@ -91,23 +91,23 @@ jobs: path: TestResults-${{ matrix.DOTNET_VERSION }} if: ${{ always() }} - - name: Perform CodeQL Analysis + - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 cd: - name: 'CD Pack and Publish to NuGet.org' + name: "CD Pack and Publish to NuGet.org" runs-on: ubuntu-latest needs: ci if: github.event_name == 'push' && github.ref == 'refs/heads/3-deployment-must-happen-on-complete' environment: production strategy: matrix: - DOTNET_VERSION: ['9.x'] + DOTNET_VERSION: ["9.x"] env: - SRC_PATH: './src' - PROJECT_PATH: 'Goodtocode.Assertion' - PROJECT_FILE: 'Goodtocode.Assertion.csproj' - NUGET_OUTPUT: 'nupkg_output' + SRC_PATH: "./src" + PROJECT_PATH: "Goodtocode.Assertion" + PROJECT_FILE: "Goodtocode.Assertion.csproj" + NUGET_OUTPUT: "nupkg_output" steps: - name: checkout uses: actions/checkout@v3 @@ -130,4 +130,4 @@ jobs: run: dotnet pack ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} --configuration Release --no-build --output ${{ env.NUGET_OUTPUT }} - name: Publish to NuGet.org - run: dotnet nuget push ${{ env.NUGET_OUTPUT }}/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate \ No newline at end of file + run: dotnet nuget push ${{ env.NUGET_OUTPUT }}/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate From 75240d3308b4d6534955ff7fff49ad8d701093d2 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 01:19:43 -0800 Subject: [PATCH 05/11] tsting non main trigger --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index a7c6f5c..cf5b508 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -5,13 +5,13 @@ on: branches: - 3-deployment-must-happen-on-complete paths: - - .github/workflows/gtc-assertion-nuget.yml + - .github/workflows/gtc-assertion-ci-cd-nuget.yml - src/** push: branches: - 3-deployment-must-happen-on-complete paths: - - .github/workflows/gtc-assertion-nuget.yml + - .github/workflows/gtc-assertion-ci-cd-nuget.yml - src/** workflow_dispatch: inputs: @@ -21,7 +21,7 @@ on: default: "development" mode: description: "Running mode" - + required: true permissions: id-token: write contents: read From c07885d721c7c93bb8abe6dbb8a50677c1c85215 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 06:52:10 -0800 Subject: [PATCH 06/11] codeql bump --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index cf5b508..d902723 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -92,7 +92,7 @@ jobs: if: ${{ always() }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 cd: name: "CD Pack and Publish to NuGet.org" From 8ecba48c6eae4de03542cdfa1d657aba687fc3c0 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 07:09:49 -0800 Subject: [PATCH 07/11] made cd only deployment --- .../workflows/gtc-assertion-ci-cd-nuget.yml | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index d902723..b6901a9 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -22,11 +22,21 @@ on: mode: description: "Running mode" required: true + permissions: id-token: write contents: read security-events: write +env: + SCRIPTS_PATH: "./.github/scripts" + SRC_PATH: "./src" + PROJECT_PATH: "Goodtocode.Assertion" + PROJECT_FILE: "Goodtocode.Assertion.csproj" + SRC_SLN: "Goodtocode.Assertion.sln" + TEST_PATH: "Goodtocode.Assertion.Tests" + TEST_PROJECT: "Goodtocode.Assertion.Tests.csproj" + jobs: ci: name: "CI Build, Test, Code QL, Publish" @@ -39,13 +49,6 @@ jobs: env: RUNTIME_ENV: "Development" - SRC_PATH: "./src" - SRC_SLN: "Goodtocode.Assertion.sln" - PROJECT_PATH: "Goodtocode.Assertion" - PROJECT_FILE: "Goodtocode.Assertion.csproj" - TEST_PATH: "Goodtocode.Assertion.Tests" - TEST_PROJECT: "Goodtocode.Assertion.Tests.csproj" - SCRIPTS_PATH: "./.github/scripts" steps: - name: checkout @@ -63,7 +66,7 @@ jobs: echo "VERSION=$version" >> $GITHUB_ENV shell: pwsh - - name: pipeline configuration secrets + - name: pipeline environment configuration run: | echo "ASPNETCORE_ENVIRONMENT=${{ env.RUNTIME_ENV }}" >> $GITHUB_ENV shell: pwsh @@ -84,6 +87,7 @@ jobs: dotnet test ${{ env.SRC_PATH }}/${{ env.TEST_PATH }}/${{ env.TEST_PROJECT }} --logger "trx;LogFileName=test_results.trx" --results-directory TestResults-${{ matrix.DOTNET_VERSION }} --verbosity normal shell: pwsh + - name: Upload test results uses: actions/upload-artifact@v4 with: @@ -91,6 +95,17 @@ jobs: path: TestResults-${{ matrix.DOTNET_VERSION }} if: ${{ always() }} + - name: Pack NuGet package + run: | + dotnet pack ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} --configuration Release --no-build --output nupkg_output + shell: pwsh + + - name: Upload NuGet package artifact + uses: actions/upload-artifact@v4 + with: + name: nuget-package + path: nupkg_output/*.nupkg + - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 @@ -104,30 +119,13 @@ jobs: matrix: DOTNET_VERSION: ["9.x"] env: - SRC_PATH: "./src" - PROJECT_PATH: "Goodtocode.Assertion" - PROJECT_FILE: "Goodtocode.Assertion.csproj" NUGET_OUTPUT: "nupkg_output" steps: - - name: checkout - uses: actions/checkout@v3 - - - name: Setup .NET ${{ matrix.DOTNET_VERSION }} - uses: actions/setup-dotnet@v4 + - name: Download NuGet package artifact + uses: actions/download-artifact@v4 with: - dotnet-version: ${{ matrix.DOTNET_VERSION }} - - - name: Restore dependencies - run: dotnet restore ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} - - - name: Build - run: dotnet build ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} --configuration Release --no-restore - - - name: Test - run: dotnet test ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} --configuration Release --no-build --verbosity normal - - - name: Pack NuGet package - run: dotnet pack ${{ env.SRC_PATH }}/${{ env.PROJECT_PATH }}/${{ env.PROJECT_FILE }} --configuration Release --no-build --output ${{ env.NUGET_OUTPUT }} + name: nuget-package + path: nupkg_output - name: Publish to NuGet.org - run: dotnet nuget push ${{ env.NUGET_OUTPUT }}/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate + run: dotnet nuget push nupkg_output/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate From 3004defe60615d15bd562651a0dfc004bd657b64 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 08:44:08 -0800 Subject: [PATCH 08/11] version to 1.1 --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index b6901a9..f4857a8 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -61,7 +61,7 @@ jobs: - name: Set-Version.ps1 run: | - $version = ${{ env.SCRIPTS_PATH }}/ci/Set-Version.ps1 -Path ${{ env.SRC_PATH }} -VersionToReplace 1.0.0 + $version = ${{ env.SCRIPTS_PATH }}/ci/Set-Version.ps1 -Path ${{ env.SRC_PATH }} -VersionToReplace 1.0.0 -Major 1 -Minor 1 echo $version echo "VERSION=$version" >> $GITHUB_ENV shell: pwsh From 4df669e72dd4fda9548d14a8b8c1b7b93121e81f Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 09:01:23 -0800 Subject: [PATCH 09/11] readme examples, fixing ci/cd badge --- README.md | 124 ++++++++++++------ .../Goodtocode.Assertion.csproj | 2 + 2 files changed, 88 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 1956ed5..8c40b95 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,112 @@ -# aspect-assertion -Fluent Assertion aspect oriented library + # Goodtocode.Assertion -**CI/CD Build Status** +Fluent Assertion aspect-oriented library for .NET Standard 2.0+ -[![.github/workflows/ci-cd.yml](https://github.com/goodtocode/aspect-assertion/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/goodtocode/aspect-assertion/actions/workflows/ci-cd.yml) +[![.github/workflows/ci-cd.yml](https://github.com/goodtocode/aspect-assertion/.github/workflows/gtc-assertion-ci-cd-nuget.yml/badge.svg)](https://github.com/goodtocode/aspect-assertion/.github/workflows/gtc-assertion-ci-cd-nuget.yml) -Goodtocode.Assertion is a .NET library providing fluent assertion and validation utilities for C# projects. It enables developers to write expressive, readable, and maintainable assertions for business logic, unit tests, and runtime validation. The library is designed for extensibility and can be integrated into any .NET project. +Goodtocode.Assertion is a .NET library providing fluent assertion and validation utilities for C# projects. It enables developers to write expressive, readable, and maintainable assertions for business logic, unit tests, and runtime validation. The library is designed for extensibility and can be integrated into any .NET Standard 2.0+ project. ## Features -* Fluent assertion syntax for clear, readable code -* Customizable assertion rules and exception handling -* Assertion scopes for grouping related checks -* Lightweight, dependency-free, and compatible with .NET Standard 2.0+ and .NET 9 -* Designed for use in both production code and unit tests +- Fluent assertion syntax for clear, readable code +- Customizable assertion rules and exception handling +- Assertion scopes for grouping related checks +- Lightweight, dependency-free, and compatible with .NET Standard 2.0+ +- Designed for use in both production code and unit tests ## Quick-Start Steps 1. Clone this repository - ``` - git clone https://github.com/goodtocode/aspect-assertion.git - ``` -2. Install .NET SDK (9.0 or compatible) - ``` - winget install Microsoft.DotNet.SDK.9 --silent - ``` + ``` + git clone https://github.com/goodtocode/aspect-assertion.git + ``` +2. Install .NET SDK (latest recommended) + ``` + winget install Microsoft.DotNet.SDK --silent + ``` 3. Build the solution - ``` - cd src - dotnet build Goodtocode.Assertion.sln - ``` + ``` + cd src + dotnet build Goodtocode.Assertion.sln + ``` 4. Run tests - ``` - cd Goodtocode.Assertion.Tests - dotnet test - ``` + ``` + cd Goodtocode.Assertion.Tests + dotnet test + ``` ## Install Prerequisites -* [.NET SDK 9+](https://dotnet.microsoft.com/en-us/download) -* Visual Studio 2022 or VS Code +- [.NET SDK (latest)](https://dotnet.microsoft.com/en-us/download) +- Visual Studio (latest) or VS Code + +## Top Use Case Examples + +### 1. Basic Assertion Scope +```csharp +using Goodtocode.Assertion; + +int value = 5; +AssertionScope.Begin() + .Assert(() => value > 0, "Value must be positive.") + .Assert(() => value < 10, "Value must be less than 10.") + .End(); +``` + +### 2. Validating Object Properties +```csharp +using Goodtocode.Assertion; + +var user = new User { Name = "Alice", Age = 30 }; +AssertionScope.Begin() + .Assert(() => !string.IsNullOrWhiteSpace(user.Name), "Name is required.") + .Assert(() => user.Age >= 18, "User must be an adult.") + .End(); +``` -## Usage Example +### 3. Custom Validator for Business Logic ```csharp using Goodtocode.Assertion; -public void Example() +public class GetMyUsersPaginatedQueryValidator : Validator { - int value = 5; - AssertionScope.Begin() - .Assert(() => value > 0, "Value must be positive.") - .Assert(() => value < 10, "Value must be less than 10.") - .End(); + public GetMyUsersPaginatedQueryValidator() + { + RuleFor(v => v.StartDate).NotEmpty() + .When(v => v.EndDate != null) + .LessThanOrEqualTo(v => v.EndDate); + + RuleFor(v => v.EndDate) + .NotEmpty() + .When(v => v.StartDate != null) + .GreaterThanOrEqualTo(v => v.StartDate); + + RuleFor(x => x.PageNumber).NotEqual(0); + RuleFor(x => x.PageSize).NotEqual(0); + } +} +``` + +### 4. Unit Test Assertion +```csharp +using Goodtocode.Assertion; +using Xunit; + +[Fact] +public void Should_Throw_When_Assertion_Fails() +{ + Assert.Throws(() => + AssertionScope.Begin() + .Assert(() => false, "This should fail.") + .End()); } ``` ## Technologies -* [C# .NET](https://docs.microsoft.com/en-us/dotnet/csharp/) -* [.NET Standard](https://docs.microsoft.com/en-us/dotnet/standard/) +- [C# .NET](https://docs.microsoft.com/en-us/dotnet/csharp/) +- [.NET Standard](https://docs.microsoft.com/en-us/dotnet/standard/) ## Version History + | Version | Date | Release Notes | |---------|-------------|--------------------------------------------------| | 1.0.0 | 2026-Jan-19 | Initial release | @@ -68,5 +116,5 @@ public void Example() This project is licensed with the [MIT license](https://mit-license.org/). ## Contact -* [GitHub Repo](https://github.com/goodtocode/aspect-assertion) -* [@goodtocode](https://twitter.com/goodtocode) +- [GitHub Repo](https://github.com/goodtocode/aspect-assertion) +- [@goodtocode](https://twitter.com/goodtocode) diff --git a/src/Goodtocode.Assertion/Goodtocode.Assertion.csproj b/src/Goodtocode.Assertion/Goodtocode.Assertion.csproj index 573d160..6bb6ba8 100644 --- a/src/Goodtocode.Assertion/Goodtocode.Assertion.csproj +++ b/src/Goodtocode.Assertion/Goodtocode.Assertion.csproj @@ -19,10 +19,12 @@ MIT Copyright © 2026 Goodtocode Goodtocode-icon.png + README.md + \ No newline at end of file From 3986a1f53747b3eaf4ab6f55529d8b740dd31d52 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 09:03:18 -0800 Subject: [PATCH 10/11] generated badge, it wasnt showing --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c40b95..a020a40 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Fluent Assertion aspect-oriented library for .NET Standard 2.0+ -[![.github/workflows/ci-cd.yml](https://github.com/goodtocode/aspect-assertion/.github/workflows/gtc-assertion-ci-cd-nuget.yml/badge.svg)](https://github.com/goodtocode/aspect-assertion/.github/workflows/gtc-assertion-ci-cd-nuget.yml) +[![CI/CD Build, Test and Deploy](https://github.com/goodtocode/aspect-assertion/actions/workflows/gtc-assertion-ci-cd-nuget.yml/badge.svg)](https://github.com/goodtocode/aspect-assertion/actions/workflows/gtc-assertion-ci-cd-nuget.yml) Goodtocode.Assertion is a .NET library providing fluent assertion and validation utilities for C# projects. It enables developers to write expressive, readable, and maintainable assertions for business logic, unit tests, and runtime validation. The library is designed for extensibility and can be integrated into any .NET Standard 2.0+ project. From 0a199f9d99ece06dbfebaddda943bca4ef30f724 Mon Sep 17 00:00:00 2001 From: Robert Good Date: Mon, 19 Jan 2026 09:05:02 -0800 Subject: [PATCH 11/11] test branch to main --- .github/workflows/gtc-assertion-ci-cd-nuget.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gtc-assertion-ci-cd-nuget.yml b/.github/workflows/gtc-assertion-ci-cd-nuget.yml index f4857a8..0b7a287 100644 --- a/.github/workflows/gtc-assertion-ci-cd-nuget.yml +++ b/.github/workflows/gtc-assertion-ci-cd-nuget.yml @@ -3,13 +3,13 @@ name: CI/CD Build, Test and Deploy on: pull_request: branches: - - 3-deployment-must-happen-on-complete + - main paths: - .github/workflows/gtc-assertion-ci-cd-nuget.yml - src/** push: branches: - - 3-deployment-must-happen-on-complete + - main paths: - .github/workflows/gtc-assertion-ci-cd-nuget.yml - src/** @@ -113,7 +113,7 @@ jobs: name: "CD Pack and Publish to NuGet.org" runs-on: ubuntu-latest needs: ci - if: github.event_name == 'push' && github.ref == 'refs/heads/3-deployment-must-happen-on-complete' + if: github.event_name == 'push' && github.ref == 'refs/heads/main' environment: production strategy: matrix: