fix: allow hooks to run only once per interaction#1243
Merged
mefellows merged 1 commit intopact-foundation:masterfrom Nov 13, 2024
lhokktyn:refactor-hooks
Merged
fix: allow hooks to run only once per interaction#1243mefellows merged 1 commit intopact-foundation:masterfrom lhokktyn:refactor-hooks
mefellows merged 1 commit intopact-foundation:masterfrom
lhokktyn:refactor-hooks
Conversation
Current behaviour will run the beforeEach and afterEach hooks multiple times if there are several provider states defined in an interaction. This is due to the way the hook are run on every call to "/_pactSetup" via the proxy. This change will ensure each of those hooks is run only once per interaction, regardless of how many provider states are defined in that interaction.
Contributor
Author
|
@mefellows I'm not sure why all those checks have failed on the last push, as only the git commit message was altered. Maybe a temporary issue with the test broker? |
Contributor
Author
|
Hi @mefellows . Do you think this may be a good candidate for merging? Let me know if you'd like anything revisiting. Cheers |
Member
|
Hi @lhokktyn - apologies for my tardiness, I'd like to test this out locally before merging. At a glance it looks good and I'm very appreciative of the tests also. I'll aim to get this out early next week. |
Contributor
Author
|
Hey @mefellows no worries, appreciate your time :) |
Member
|
Sorry for the delay here @lhokktyn - this change has been released into the latest version v13.1.5. |
Contributor
Author
|
Brilliant! Thanks for the heads up @mefellows 👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current behaviour will run the
beforeEachandafterEachhooks multiple times if there are several provider states defined in an interaction. This is due to the way the hook are run on every call to/_pactSetupvia the proxy.This change will ensure each of those hooks is run only once per interaction, regardless of how many provider states are defined in that interaction.
Our primary use case in applying this fix was to be able to support multiple
given()statements in our consumer tests without having them each trigger thebeforeEachhook (which we want to use for resetting state), egWhich produces the following in the Pact JSON:
{ "description": "a request for pets with multiple statuses", "pending": false, "providerStates": [ { "name": "has a pet with status", "params": { "value": "sold" } }, { "name": "has a pet with status", "params": { "value": "pending" } } ], ... }Which drives multiple calls to the
/_pactSetupendpoint during Provider verification, one for each of theproviderStates, and thus multiple calls tobeforeEach.This fix ensures the hooks are only run on the first
setupcall and on the lastteardowncall.