Skip to content

JSON matcher is not working as expected with pattern expanders #90

Description

@norberttech

In project I'm currently working on, we had a following scenario step:

    And json response should match:
    """
    {
      "limit": 10,
      "offset": 0,
      "count": 1,
      "wins": @array@.count(1)
    }
    """

and it was throwing me a very weird error: Type pattern "@array@" is not supported by TextMatcher. (RuntimeException).
After investigation it turned out that php-matcher/src/Matcher/Pattern/Assert/Json.php:33 can't recognize this pattern as a valid json value (because of @array@.count(1)) and thats why JSONExpander is being ignored.
The same problem seems to be found here: #83

Perfect solution would be to update Json::transformPattern($pattern) method, to transform patterns with expanders into native strings:

before transformation:
@array@.count(1)

after transformation:
"@array@.count(1)"

Of course currently this issue can be solved by making sure that all patterns with expanders are stored just like in following example:

    And json response should match:
    """
    {
      "limit": 10,
      "offset": 0,
      "count": 1,
      "wins": "@array@.count(1)"
    }
    """

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions