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

(TypeScript) Cannot use V3 matchers within MessagePact. Types are incompatible. #1133

Closed
3 tasks done
murbanowicz opened this issue Oct 26, 2023 · 3 comments · Fixed by pact-foundation/pact-js-core#493 or #1183
Closed
3 tasks done
Labels
bug Indicates an unexpected problem or unintended behavior triage This issue is yet to be triaged by a maintainer

Comments

@murbanowicz
Copy link

murbanowicz commented Oct 26, 2023

Software versions

TypeScript: 5.2.2
"@pact-foundation/pact": "12.1.0"

Issue Checklist

Please confirm the following:

  • I have upgraded to the latest
  • I have the read the FAQs in the Readme
  • I have triple checked, that there are no unhandled promises in my code and have read the section on intermittent test failures

Expected behaviour

I should be able to use v3 matchers

Actual behaviour

Types are incompatible

Steps to reproduce

import * as path from 'path';
import { MessageConsumerPact, MatchersV3 } from '@pact-foundation/pact';

const messagePact = new MessageConsumerPact({
  consumer: 'example-shipment-service',
  dir: path.resolve(process.cwd(), 'pacts'),
  pactfileWriteMode: 'update',
  provider: 'example-orders-service',
});

describe('Consumer: example-shipment-service, Provider: example-orders-service', () => {
  it('order-confirmed event', () => {
    return messagePact.expectsToReceive('order-confirmed').withContent({
      type: MatchersV3.equal('order-confirmed'),
    });
  });
});

gives the following error:

TS2345: Argument of type { type: MatchersV3.Matcher<string>; } is not assignable to parameter of type AnyTemplate
Types of property type are incompatible.
Type Matcher<string> is not assignable to type
string | number | boolean | JsonArray | JsonMap | Matcher<AnyTemplate> | ArrayMatcher<AnyTemplate> | TemplateMap | ArrayTemplate
Type Matcher<string> is not assignable to type TemplateMap
Index signature for type string is missing in type Matcher<string>

It will only work without error when using Matchers which I believe are V2 matches and are missing quite a lot of stuff.

Relevant log files

Please ensure you set logging to DEBUG and attach any relevant log files here (or link to a gist).

@murbanowicz murbanowicz added bug Indicates an unexpected problem or unintended behavior triage This issue is yet to be triaged by a maintainer labels Oct 26, 2023
@mefellows
Copy link
Member

This should be fixed now in the latest release.

@ferrisbuhler
Copy link

@mefellows Which version of pact-js do you consider to contain the fix? With 12.1.2 (running on Windows) the problem still seems to exist.

@mefellows
Copy link
Member

The fix addressed the main body but not the matchers, which I believe is what you need. It should be straightforward, I'll see if I can patch it tomorrow for you

@mefellows mefellows reopened this Feb 27, 2024
mefellows added a commit to pact-foundation/pact-js-core that referenced this issue Feb 27, 2024
mefellows added a commit to pact-foundation/pact-js-core that referenced this issue Feb 28, 2024
mefellows added a commit that referenced this issue Feb 28, 2024
mefellows added a commit that referenced this issue Feb 28, 2024
mefellows added a commit that referenced this issue Feb 28, 2024
mefellows added a commit that referenced this issue Feb 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Indicates an unexpected problem or unintended behavior triage This issue is yet to be triaged by a maintainer
Projects
None yet
3 participants