Skip to content

Spike: Improve engine test data coverage #14

@emyller

Description

@emyller
  • Add JSONPath selector tests for unusual traits, e.g. sómêthing, $sometrait, 何か.

  • Extract whatever is useful from this AI analysis:

    Suggested new test cases by ChatGPT
    • Ensure choice when priorities clash

      When two or more feature overrides share the same priority, which one should be selected in evaluation?

    • Ensure segment override only applies to the intended feature

      An override on string_feature must not affect evaluation of integer_feature.

    • Ensure deterministic selection at split boundaries

      When the hash falls exactly on a split boundary (e.g. 0.3, 0.6), confirm which variant is chosen.

    • Ensure variants with weight 0 are never selected

      Verify that a variant defined with 0% allocation is consistently excluded from results.

    • Ensure variant choice is stable for an identity

      Repeated evaluations for the same identity must always return the same variant.

    • Ensure NOT_EQUAL operator works correctly

      Trait not equal to value should satisfy/fail as expected.

    • Ensure CONTAINS works on strings and arrays

      Rule should match both substring in string and membership in array.

    • Ensure IN fails when value is not present

      A property not found in the list should result in no match.

    • Ensure IS_SET fails when property is missing

      If the trait is absent, IS_SET should evaluate to false.

    • Ensure IS_NOT_SET fails when property exists

      If the trait is present, IS_NOT_SET should evaluate to false.

    • Ensure environment name mismatch fails

      A rule depending on $.environment.name should not match if the environment name differs.

    • Ensure identity identifier mismatch fails

      A rule on $.identity.identifier should not match if the identifier differs.

    • Ensure boolean feature is evaluated correctly

      Add a root-level boolean feature to confirm true/false values are handled.

    • Ensure float feature stored as number is evaluated correctly

      A float defined as numeric (not string) should evaluate without issue.

    • Ensure type mismatch is handled safely

      Trait value "42" (string) compared against a number should not cause an error.

    • Ensure override enables a disabled root feature

      A root-level disabled feature should be enabled if a segment provides an override.

    • Ensure empty rules segment always applies

      A segment with no conditions but with an override should always apply.

    • Ensure OVERRIDE reason is produced when expected

      A feature value from a segment override should return reason OVERRIDE.

    • Ensure invalid operator fails gracefully

      An unsupported operator should not break evaluation and should return safe defaults.

  • Any other suggestions?

A later goal is #13.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions