{"version":3,"sources":["../../src/matchers/toBeExactlyAt.ts"],"sourcesContent":["import { Id, Tester, UseCase } from '../utils/Types';\nimport { isDefined } from '../utils/Utils';\nimport { match } from './Match';\n\nconst toUrl = (uc: UseCase, id?: Id): string => {\n  const i = isDefined(id) ? `/${id}` : '';\n  return `/${uc.app.id}/${uc.id}${i}`;\n};\n\nexport const toBeExactlyAt = (tester?: Tester, uc?: UseCase, id?: Id): jest.CustomMatcherResult => {\n  return match<Tester>(tester as Tester)\n    .undefined(t => t, 'Tester is undefined')\n    .undefined(t => t.url, 'Tester does not contain a URL')\n    .undefined(() => uc, 'Use case is undefined')\n    .not(\n      t => t.url.includes(toUrl(uc as UseCase, id)),\n      t => `We expected the tester to be at: '${toUrl(uc as UseCase, id)}', but it is at: '${t?.url}' instead.`\n    )\n    .else(t => `The tester is at '${t?.url}'`);\n};\n\nexpect.extend({\n  toBeExactlyAt,\n});\n\ndeclare global {\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  namespace jest {\n    interface Matchers<R, T> {\n      toBeExactlyAt(uc?: UseCase, id?: Id): R;\n    }\n  }\n}\n"],"mappings":";;;;;;;;;AAIA,IAAM,QAAQ,CAAC,IAAa,OAAoB;AAC9C,QAAM,IAAI,UAAU,EAAE,IAAI,IAAI,EAAE,KAAK;AACrC,SAAO,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;AACnC;AAEO,IAAM,gBAAgB,CAAC,QAAiB,IAAc,OAAsC;AACjG,SAAO,MAAc,MAAgB,EAClC,UAAU,OAAK,GAAG,qBAAqB,EACvC,UAAU,OAAK,EAAE,KAAK,+BAA+B,EACrD,UAAU,MAAM,IAAI,uBAAuB,EAC3C;AAAA,IACC,OAAK,EAAE,IAAI,SAAS,MAAM,IAAe,EAAE,CAAC;AAAA,IAC5C,OAAK,qCAAqC,MAAM,IAAe,EAAE,CAAC,qBAAqB,GAAG,GAAG;AAAA,EAC/F,EACC,KAAK,OAAK,qBAAqB,GAAG,GAAG,GAAG;AAC7C;AAEA,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}