Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wb 624 event machine convert context validation methods to static in invokable behavior class #87

Conversation

deligoez
Copy link
Member

@deligoez deligoez commented Nov 5, 2024

Make InvokableBehavior context validation methods static

Background

The InvokableBehavior class provides context validation functionality through hasMissingContext() and validateRequiredContext() methods. These methods were instance-based but did not rely on any instance state since they only validate required context types against provided context values.

Changes

  • Made $requiredContext property static in InvokableBehavior class and its subclasses
  • Converted hasMissingContext() and validateRequiredContext() to static methods
  • Updated test helper classes to use static $requiredContext
  • Refactored tests to use static method calls instead of creating instances
  • Added comprehensive test cases for all context validation scenarios

Why

  • More logical API: Since validation is class-based (defined by $requiredContext in each behavior class) rather than instance-based, static methods make more sense
  • Better performance: No need to instantiate behaviors just for context validation
  • Clearer intention: Static property and methods better communicate that context requirements are class-level concerns
  • Easier testing: Can validate contexts without creating behavior instances

Backwards Compatibility

This is a breaking change as it modifies method signatures and property visibility. Any code that relies on instance-based context validation will need to be updated to use static calls.

…omplete context

Add a new test case to ensure that hasMissingContext returns null when all required context is present.
Add new tests to ensure hasMissingContext checks for type constraints.
Previously, the tests did not validate data types for required context.
…sage

Add a test to ensure validateRequiredContext throws an exception
with the correct missing key message.
Add test ensuring validateRequiredContext passes when context is complete
…static

Update `requiredContext`, `hasMissingContext`, and `validateRequiredContext`
methods to be static for consistency and easier usage. Adjust context
property and method calls accordingly.
…ction classes

Make $requiredContext static in IsOddGuard, IsValidatedOddGuard, and IsOddAction for consistent usage across these classes.
Simplify test cases by calling static methods directly from
TestBehavior classes instead of creating instance objects.
@tkaratug tkaratug merged commit 2a4d4d7 into main Nov 7, 2024
12 checks passed
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.

3 participants