Skip to content

Comments

v0.3.0-beta#16

Merged
glenn2223 merged 1 commit intomainfrom
prep-v0.3.0-beta
Apr 25, 2024
Merged

v0.3.0-beta#16
glenn2223 merged 1 commit intomainfrom
prep-v0.3.0-beta

Conversation

@glenn2223
Copy link
Contributor

0.3.0-beta - 2024-04-25

Compare to previous release

Breaking Changes (Overview)

  • IFilterStatement
    • Now has an Options property
      This allows serialising to retain options applied to filters
    • Manipulators has moved into the new Options property
  • IEntityManipulator
    • Now requires methods to manipulate Properties/Fields AND raw values
  • IOperation
    • Has new Defaults property
    • Match has moved into Defaults
    • SkipNullMemberChecks has moved into Defaults and is now called NullHandler
  • Operations can no longer have their null handler customised
    This needs to be revisited, read the discussion
  • Serialisation
    • To accommodate the changes above, we now serialise Options - meaning current Manipulators will be lost.
    • Serialisation could break if the order of types was different. To prevent this there is now a default order and a TypeTracker.FilterStatementTypes static property for customisation
  • Equal and NotEqual
    • No longer do pre-emptive null checks as checking null is excluding actual matches
  • DoesNotContain, DoesNotEndWith, DoesNotStartWith
    • Now do a pre-emptive "is null OR" check as it was excluding nulls

Package: TopMarksDevelopment.ExpressionBuilder(* All)

Fixed

  • Actually fixed the paths for the icons and the links to GitHub source code

Changed

  • Compressed icon.png to reduce package size increase

Package: TopMarksDevelopment.ExpressionBuilder.Operations.*Not* (All Not Operations)

Changes

  • Barring NotIn, all Not operations no longer rely on their counter operation. This was just unnecessary as the expression access was often simpler

Package: TopMarksDevelopment.ExpressionBuilder.Operations.* (All Operations)

Breaking changes

  • Reflected the changes made to IOperation:
    • Has new Defaults property. Match has moved into Defaults. SkipNullMemberChecks has moved into Defaults and is now called NullHandler

Package: TopMarksDevelopment.ExpressionBuilder.Api

Breaking changes

  • Made changes made to IOperation:
    • Has new Defaults property. Match has moved into Defaults. SkipNullMemberChecks has moved into Defaults and is now called NullHandler

Package: TopMarksDevelopment.ExpressionBuilder.Core

Breaking changes

  • Serialisation could break if the order of types was different. To prevent this there is now a default order and a TypeTracker.FilterStatementTypes static property for customisation

Fixed

  • Calling ToString on a manipulator now produces with the correct output string.
  • Manipulators that cause an underlying type change no longer throws an exception
  • Serialisation now adds core items based on the non-existence of IFilterItem rather than based on the values in the old ProtoTypes meaning serialisation could break in certain scenarios
  • Assigning an OpenCollection to a variable, then calling a further OpenCollection and CloseCollection in a chain would leave the variable in the OpenCollection state. This would apply further filters to the wrong class/property causing errors/miss-results

Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotContain

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on Contains

Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotEndWith

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on EndsWith

Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotStartWith

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on StartsWith

Package: TopMarksDevelopment.ExpressionBuilder.Operations.Equal

Breaking changes

  • No longer does a null check first. As matching null will always return nothing

Package: TopMarksDevelopment.ExpressionBuilder.Operations.In

Fixed

  • We no longer try to convert members to nullable types if they're already nullable

Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotEmpty

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on IsEmpty

Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNull

Changes

  • No longer depends on IsNull

Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNullOrWhiteSpace

Changes

  • No longer depends on IsNullOrWhiteSpace

Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetween

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on Between

Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetweenExclusive

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Changes

  • No longer depends on BetweenExclusive

Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotEqual

Breaking changes

  • No longer does a null check first. As results are excluded if they're null

Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotIn

Breaking changes

  • Tweaked null check to allow null or a match. As results are excluded if they're null

Other (none-user facing)

Added

  • Completed adding all tests for the rest of the operations. Closes: #1
  • Added more tests to:
    • Core package
    • all the Between operations
    • DoesNotContain operation
    • In operation
    • NotIn operation
    • SmartSearch operation

Changes

  • To better identify and maintain tests that have been added after a fix, they have all been extracted into their own Fix-Tests.cs class - this should be the de facto moving forward
  • Converted tests to the preferred TheroyData method
  • Removed tests that are related to the (for-now) removed SkipNullChecks option
  • Improved on build-and-test by correcting --no-restore to --no-build during the test phase

# 0.3.0-beta - 2024-04-25

<small>[Compare to previous release][comp:0.3.0-beta]</small>

### Breaking Changes (Overview)

-   `IFilterStatement`
    -   Now has an `Options` property
        This allows serialising to retain options applied to filters
    -   `Manipulators` has moved into the new `Options` property
-   `IEntityManipulator`
    -   Now requires methods to manipulate Properties/Fields AND raw values
-   `IOperation`
    -   Has new `Defaults` property
    -   `Match` has moved into `Defaults`
    -   `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`
-   Operations can no longer have their null handler customised
This needs to be revisited, read the [discussion](#14)
-   Serialisation
    -   To accommodate the changes above, we now serialise `Options` - meaning current `Manipulators` will be lost.
    -   Serialisation could break if the order of types was different. To prevent this there is now a default order and a `TypeTracker.FilterStatementTypes` static property for customisation
-   `Equal` and `NotEqual`
    -   No longer do pre-emptive null checks as checking `null` is excluding actual matches
-   `DoesNotContain`, `DoesNotEndWith`, `DoesNotStartWith`
    -   Now do a pre-emptive "is null OR" check as it was excluding `null`s

### Package: TopMarksDevelopment.ExpressionBuilder(\* All)

#### Fixed

-   Actually fixed the paths for the icons and the links to GitHub source code

#### Changed

-   Compressed `icon.png` to reduce package size increase

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.\*Not\* (All Not Operations)

#### Changes

-   Barring `NotIn`, all `Not` operations no longer rely on their counter operation. This was just unnecessary as the expression access was often simpler

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.\* (All Operations)

#### Breaking changes

-   Reflected the changes made to `IOperation`:
    -   Has new `Defaults` property. `Match` has moved into `Defaults`. `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`

### Package: TopMarksDevelopment.ExpressionBuilder.Api

#### Breaking changes

-   Made changes made to `IOperation`:
    -   Has new `Defaults` property. `Match` has moved into `Defaults`. `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`

### Package: TopMarksDevelopment.ExpressionBuilder.Core

#### Breaking changes

-   Serialisation could break if the order of types was different. To prevent this there is now a default order and a `TypeTracker.FilterStatementTypes` static property for customisation

#### Fixed

-   Calling `ToString` on a manipulator now produces with the correct output string.
-   Manipulators that cause an underlying type change no longer throws an exception
-   Serialisation now adds core items based on the non-existence of `IFilterItem` rather than based on the values in the old `ProtoTypes` meaning serialisation could break in certain scenarios
-   Assigning an `OpenCollection` to a variable, then calling a further `OpenCollection` and `CloseCollection` in a chain would leave the variable in the `OpenCollection` state. This would apply further filters to the wrong class/property causing errors/miss-results

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotContain

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `Contains`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotEndWith

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `EndsWith`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotStartWith

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `StartsWith`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.Equal

#### Breaking changes

-   No longer does a null check first. As matching null will always return nothing

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.In

#### Fixed

-   We no longer try to convert `members` to nullable types if they're already nullable

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotEmpty

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `IsEmpty`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNull

#### Changes

-   No longer depends on `IsNull`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNullOrWhiteSpace

#### Changes

-   No longer depends on `IsNullOrWhiteSpace`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetween

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `Between`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetweenExclusive

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

#### Changes

-   No longer depends on `BetweenExclusive`

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotEqual

#### Breaking changes

-   No longer does a null check first. As results are excluded if they're null

### Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotIn

#### Breaking changes

-   Tweaked null check to allow null or a match. As results are excluded if they're null

### Other (none-user facing)

#### Added

-   Completed adding all tests for the rest of the operations. Closes: [#1](#1)
-   Added more tests to:
    -   `Core` package
    -   all the `Between` operations
    -   `DoesNotContain` operation
    -   `In` operation
    -   `NotIn` operation
    -   `SmartSearch` operation

#### Changes

-   To better identify and maintain tests that have been added after a fix, they have all been extracted into their own `Fix-Tests.cs` class - this should be the de facto moving forward
-   Converted tests to the preferred `TheroyData` method
-   Removed tests that are related to the (for-now) removed `SkipNullChecks` option
-   Improved on `build-and-test` by correcting `--no-restore` to `--no-build` during the test phase

[comp:0.3.0-beta]: v0.2.1-beta...v0.3.0-beta
@glenn2223 glenn2223 merged commit 989e7a0 into main Apr 25, 2024
@glenn2223 glenn2223 deleted the prep-v0.3.0-beta branch April 25, 2024 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add missing tests

1 participant