Best JavaScript code snippet using pact-foundation-pact
dialogs.js
Source:dialogs.js
1import { collabInfo } from '../collaboration-core/utilities';2import {3 SharePopup,4 JoinPopup,5 ViewSuggestionPopup,6 AuthorSuggestionPopup7 }8 from './CollaborationPopups'9import {10 CollaborationUI,11 CollaborationUI_API_Examples12 }13 from './CollaborationToolbar'14export function openStartSessionDialogue(15 collabPlugin,16 $popupContainer, // jquery selector17 $toolbarContainer,18 onSuccess, // cb19 onFailure // cb20 ) {21 let collaborationUI = {};22 let boundOnSuccess = function(member){23 collabPlugin.resizeToolbar($toolbarContainer, 350, function (){24 $(".project-manager-runtime-console-area").hide(); //fixme25 collaborationUI["ui"] = (new CollaborationUI($toolbarContainer));26 collaborationUI["ui"].setOnToolbarMenuOpen( () => {27 return {28 member: {29 name: collabInfo.myInfo.name, //todo Katsa Need function for this30 icon: collabInfo.myInfo.icon, //todo Katsa Need function for this31 },32 link: collabPlugin.getInvitationCode(),33 projectName: collabPlugin.shProject.description34 }35 });36 setUpSuggestionOnClick(collaborationUI["ui"], collabPlugin);37 });38 onSuccess(member, {});39 }40 let sharePopup = new SharePopup($popupContainer);41 sharePopup.setOnCloseCb(onFailure);42 sharePopup.setOnShareCb(boundOnSuccess);43 // collabPlugin.getInvitationCode();44 // onSuccess({45 // name: sharePopup.getName(),46 // icon: "myIcon"47 // },48 // {49 // //TODO: return array of shared pitem ids50 // });51 return collaborationUI;52}53function setUpSuggestionOnClick(ui, collabPlugin){54 ui.setOnClickSuggestionCb((node, {suggestionID, pItemID}) => {55 openViewSuggestionDialogue(collabPlugin, {suggestionID, pItemID});56 });57}58let $suggestionContainer = $(59 `<div style = "60 position: absolute;61 top: 0;62 left: 0;63 "></div>`64 );65$(document).ready(() => {66 $('body').append($suggestionContainer);67});68function openViewSuggestionDialogue(collabPlugin, {suggestionID, pItemID}){69 new ViewSuggestionPopup(70 $suggestionContainer, 71 pItemID,72 [],73 collabPlugin.getSuggestionTitle(pItemID, suggestionID),74 collabPlugin.getSuggestionComment(pItemID,suggestionID),75 collabPlugin.amIAuthor(pItemID),76 (popup) => {77 collabPlugin.openPItemOnDialogue(78 popup.getLeftContainerSelector(),79 pItemID,80 false,81 false,82 {83 height: -10,84 width: 0,85 top: 163,86 left: 290,87 zIndex: 7388 },89 );90 collabPlugin.openPItemOnDialogue(91 popup.getRightContainerSelector(),92 pItemID,93 true,94 false,95 {96 height: -10,97 width: 0,98 top: 163,99 left: 290,100 zIndex: 73101 },102 suggestionID103 );104 let closeDialog = () => {105 popup.closePopup();106 }107 popup.setOnYesCb(() => {108 collabPlugin.acceptSuggestion(pItemID, suggestionID);109 collabPlugin.closeSuggestion(110 popup.getFileId(), 111 popup.getLeftContainerSelector(),112 popup.getRightContainerSelector(),113 closeDialog114 );115 });116 popup.setOnNoCb(() => {117 collabPlugin.denySuggestion(pItemID, suggestionID);118 collabPlugin.closeSuggestion(119 popup.getFileId(), 120 popup.getLeftContainerSelector(),121 popup.getRightContainerSelector(),122 closeDialog123 );124 });125 popup.setOnClickX( () => {126 collabPlugin.closeSuggestion(127 popup.getFileId(),128 popup.getLeftContainerSelector(),129 popup.getRightContainerSelector(),130 closeDialog131 );132 });133 }134 );135}136export function openSuggestionDialogue(collabPlugin, pitemID) {137 $suggestionContainer.empty();138 let popup = new AuthorSuggestionPopup(139 $suggestionContainer, 140 pitemID,141 (popup) => {142 collabPlugin.openPItemOnDialogue(143 popup.getLeftContainerSelector(),144 pitemID,145 false,146 false,147 {148 height: -10,149 width: 0,150 top: 163,151 left: 290,152 zIndex: 73153 });154 collabPlugin.openPItemOnDialogue(155 popup.getRightContainerSelector(),156 pitemID,157 true,158 true,159 {160 height: -10,161 width: 0,162 top: 163,163 left: 290,164 zIndex: 73165 });166 let closeDialog = () => {167 popup.closePopup();168 }169 popup.setOnYesCb(() => {170 collabPlugin.saveSuggestion(171 popup.getFileId(),172 popup.getTitle(),173 popup.getComment(),174 popup.getLeftContainerSelector(),175 popup.getRightContainerSelector(),176 closeDialog177 );178 });179 popup.setOnNoCb(() => {180 collabPlugin.closeSuggestion(181 popup.getFileId(), 182 popup.getLeftContainerSelector(),183 popup.getRightContainerSelector(),184 closeDialog185 );186 });187 popup.setOnClickX( () => {188 collabPlugin.closeSuggestion(189 popup.getFileId(),190 popup.getLeftContainerSelector(),191 popup.getRightContainerSelector(),192 closeDialog193 );194 });195 }196 );197}198export function createSuggestionOnToolbar(199 {ui}, 200 {201 pItemID, 202 suggestionID,203 user, 204 renderInfo,205 }206){207 ui.addSuggestionAnnotation(208 user.name, 209 {210 icon: renderInfo[0].value.path,211 name: renderInfo[1].value.text,212 color: renderInfo[2].value.colour213 },214 {215 suggestionID,216 pItemID217 }218 )219}220export function removeSuggestionFromToolbar({ui}, suggestionID){221 ui.removeSuggestionAnnotation((suggestionData) => {222 return suggestionData.suggestionID == suggestionID;223 });224}225export function logCreatePItem({ui}, {user,renderInfo}) {226 let d = new Date();227 let time = `${d.getHours()}:${d.getMinutes()}`;228 ui.pushFrontAction(user, {icon: renderInfo[0].value, name: renderInfo[1].value.text}, '#53FF50', 'Created', time);229}230export function logUserJoined({ui}, {user}) {231 let d = new Date();232 let time = `${d.getHours()}:${d.getMinutes()}`;233 ui.pushFrontAction(user, null, '#51C0FF', 'Joined the project', time);234}235export function logSuggestion({ui}, {user,renderInfo}) {236 let d = new Date();237 let time = `${d.getHours()}:${d.getMinutes()}`;238 ui.pushFrontAction(user, {icon: renderInfo[0].value, name: renderInfo[1].value.text}, '#FBFF46', 'Suggested', time);239}240export function logAcceptSuggestion({ui}, {user,renderInfo}) {241 let d = new Date();242 let time = `${d.getHours()}:${d.getMinutes()}`;243 ui.pushFrontAction(user, {icon: renderInfo[0].value, name: renderInfo[1].value.text}, '#53FF50', 'Accepted suggestion', time);244}245export function logRejectSuggestion({ui}, {user,renderInfo}) {246 let d = new Date();247 let time = `${d.getHours()}:${d.getMinutes()}`;248 ui.pushFrontAction(user, {icon: renderInfo[0].value, name: renderInfo[1].value.text}, '#F54C27', 'Rejected suggestion', time);249}250export function openJoinSessionDialogue(251 collabPlugin,252 $dialog, // jquery selector253 $toolbarContainer,254 onSuccess, // cb255 onFailure // cb256 ) {257 let collaborationUI = {};258 let boundOnSuccess = function(name, link){259 onSuccess(name, link, ()=>{260 collabPlugin.resizeToolbar($toolbarContainer, 350, function (){261 $(".project-manager-runtime-console-area").hide(); // fix me262 $toolbarContainer = $($toolbarContainer);263 collaborationUI["ui"] = new CollaborationUI($toolbarContainer);264 collaborationUI["ui"].setOnToolbarMenuOpen( () => { 265 return {266 member: {267 name: collabInfo.myInfo.name, //todo Katsa Need function for this268 icon: collabInfo.myInfo.icon, //todo Katsa Need function for this269 },270 link: collabPlugin.getInvitationCode(),271 projectName: collabPlugin.shProject.description272 }273 });274 setUpSuggestionOnClick(collaborationUI["ui"], collabPlugin);275 });276 return collaborationUI;277 });278 };279 let popup = new JoinPopup($dialog);280 popup.setOnJoinCb(boundOnSuccess);281 popup.setOnCloseCb(onFailure);282 return collaborationUI;...
suggest.js
Source:suggest.js
1/*---------------------------------------------------------------------------------------------2 * Copyright (c) Microsoft Corporation. All rights reserved.3 * Licensed under the MIT License. See License.txt in the project root for license information.4 *--------------------------------------------------------------------------------------------*/5'use strict';6import { sequence, asWinJsPromise } from '../../../base/common/async.js';7import { isFalsyOrEmpty } from '../../../base/common/arrays.js';8import { compareIgnoreCase } from '../../../base/common/strings.js';9import { assign } from '../../../base/common/objects.js';10import { onUnexpectedExternalError } from '../../../base/common/errors.js';11import { TPromise } from '../../../base/common/winjs.base.js';12import { registerDefaultLanguageCommand } from '../../browser/editorExtensions.js';13import { SuggestRegistry, SuggestTriggerKind } from '../../common/modes.js';14import { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';15export var Context = {16 Visible: new RawContextKey('suggestWidgetVisible', false),17 MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false),18 MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true),19 AcceptOnKey: new RawContextKey('suggestionSupportsAcceptOnKey', true),20 AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true)21};22var _snippetSuggestSupport;23export function setSnippetSuggestSupport(support) {24 var old = _snippetSuggestSupport;25 _snippetSuggestSupport = support;26 return old;27}28export function provideSuggestionItems(model, position, snippetConfig, onlyFrom, context) {29 if (snippetConfig === void 0) { snippetConfig = 'bottom'; }30 var allSuggestions = [];31 var acceptSuggestion = createSuggesionFilter(snippetConfig);32 position = position.clone();33 // get provider groups, always add snippet suggestion provider34 var supports = SuggestRegistry.orderedGroups(model);35 // add snippets provider unless turned off36 if (snippetConfig !== 'none' && _snippetSuggestSupport) {37 supports.unshift([_snippetSuggestSupport]);38 }39 var suggestConext = context || { triggerKind: SuggestTriggerKind.Invoke };40 // add suggestions from contributed providers - providers are ordered in groups of41 // equal score and once a group produces a result the process stops42 var hasResult = false;43 var factory = supports.map(function (supports) {44 return function () {45 // stop when we have a result46 if (hasResult) {47 return undefined;48 }49 // for each support in the group ask for suggestions50 return TPromise.join(supports.map(function (support) {51 if (!isFalsyOrEmpty(onlyFrom) && onlyFrom.indexOf(support) < 0) {52 return undefined;53 }54 return asWinJsPromise(function (token) { return support.provideCompletionItems(model, position, suggestConext, token); }).then(function (container) {55 var len = allSuggestions.length;56 if (container && !isFalsyOrEmpty(container.suggestions)) {57 for (var _i = 0, _a = container.suggestions; _i < _a.length; _i++) {58 var suggestion = _a[_i];59 if (acceptSuggestion(suggestion)) {60 fixOverwriteBeforeAfter(suggestion, container);61 allSuggestions.push({62 position: position,63 container: container,64 suggestion: suggestion,65 support: support,66 resolve: createSuggestionResolver(support, suggestion, model, position)67 });68 }69 }70 }71 if (len !== allSuggestions.length && support !== _snippetSuggestSupport) {72 hasResult = true;73 }74 }, onUnexpectedExternalError);75 }));76 };77 });78 var result = sequence(factory).then(function () { return allSuggestions.sort(getSuggestionComparator(snippetConfig)); });79 // result.then(items => {80 // console.log(model.getWordUntilPosition(position), items.map(item => `${item.suggestion.label}, type=${item.suggestion.type}, incomplete?${item.container.incomplete}, overwriteBefore=${item.suggestion.overwriteBefore}`));81 // return items;82 // }, err => {83 // console.warn(model.getWordUntilPosition(position), err);84 // });85 return result;86}87function fixOverwriteBeforeAfter(suggestion, container) {88 if (typeof suggestion.overwriteBefore !== 'number') {89 suggestion.overwriteBefore = 0;90 }91 if (typeof suggestion.overwriteAfter !== 'number' || suggestion.overwriteAfter < 0) {92 suggestion.overwriteAfter = 0;93 }94}95function createSuggestionResolver(provider, suggestion, model, position) {96 return function () {97 if (typeof provider.resolveCompletionItem === 'function') {98 return asWinJsPromise(function (token) { return provider.resolveCompletionItem(model, position, suggestion, token); })99 .then(function (value) { assign(suggestion, value); });100 }101 return TPromise.as(void 0);102 };103}104function createSuggesionFilter(snippetConfig) {105 if (snippetConfig === 'none') {106 return function (suggestion) { return suggestion.type !== 'snippet'; };107 }108 else {109 return function () { return true; };110 }111}112function defaultComparator(a, b) {113 var ret = 0;114 // check with 'sortText'115 if (typeof a.suggestion.sortText === 'string' && typeof b.suggestion.sortText === 'string') {116 ret = compareIgnoreCase(a.suggestion.sortText, b.suggestion.sortText);117 }118 // check with 'label'119 if (ret === 0) {120 ret = compareIgnoreCase(a.suggestion.label, b.suggestion.label);121 }122 // check with 'type' and lower snippets123 if (ret === 0 && a.suggestion.type !== b.suggestion.type) {124 if (a.suggestion.type === 'snippet') {125 ret = 1;126 }127 else if (b.suggestion.type === 'snippet') {128 ret = -1;129 }130 }131 return ret;132}133function snippetUpComparator(a, b) {134 if (a.suggestion.type !== b.suggestion.type) {135 if (a.suggestion.type === 'snippet') {136 return -1;137 }138 else if (b.suggestion.type === 'snippet') {139 return 1;140 }141 }142 return defaultComparator(a, b);143}144function snippetDownComparator(a, b) {145 if (a.suggestion.type !== b.suggestion.type) {146 if (a.suggestion.type === 'snippet') {147 return 1;148 }149 else if (b.suggestion.type === 'snippet') {150 return -1;151 }152 }153 return defaultComparator(a, b);154}155export function getSuggestionComparator(snippetConfig) {156 if (snippetConfig === 'top') {157 return snippetUpComparator;158 }159 else if (snippetConfig === 'bottom') {160 return snippetDownComparator;161 }162 else {163 return defaultComparator;164 }165}166registerDefaultLanguageCommand('_executeCompletionItemProvider', function (model, position, args) {167 var result = {168 incomplete: false,169 suggestions: []170 };171 var resolving = [];172 var maxItemsToResolve = args['maxItemsToResolve'] || 0;173 return provideSuggestionItems(model, position).then(function (items) {174 for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {175 var item = items_1[_i];176 if (resolving.length < maxItemsToResolve) {177 resolving.push(item.resolve());178 }179 result.incomplete = result.incomplete || item.container.incomplete;180 result.suggestions.push(item.suggestion);181 }182 }).then(function () {183 return TPromise.join(resolving);184 }).then(function () {185 return result;186 });187});188var _suggestions;189var _provider = new /** @class */ (function () {190 function class_1() {191 }192 class_1.prototype.provideCompletionItems = function () {193 return _suggestions && { suggestions: _suggestions };194 };195 return class_1;196}());197SuggestRegistry.register('*', _provider);198export function showSimpleSuggestions(editor, suggestions) {199 setTimeout(function () {200 _suggestions = suggestions;201 editor.getContribution('editor.contrib.suggestController').triggerSuggest([_provider]);202 _suggestions = undefined;203 }, 0);...
templates.js
Source:templates.js
1const prefix = 'algolia-docsearch';2const suggestionPrefix = `${prefix}-suggestion`;3const footerPrefix = `${prefix}-footer`;4/* eslint-disable max-len */5const templates = {6 suggestion: `7 <a class="${suggestionPrefix}8 {{#isCategoryHeader}}${suggestionPrefix}__main{{/isCategoryHeader}}9 {{#isSubCategoryHeader}}${suggestionPrefix}__secondary{{/isSubCategoryHeader}}10 "11 aria-label="Link to the result"12 href="{{{url}}}"13 >14 <div class="${suggestionPrefix}--category-header">15 <span class="${suggestionPrefix}--category-header-lvl0">{{{category}}}</span>16 </div>17 <div class="${suggestionPrefix}--wrapper">18 <div class="${suggestionPrefix}--subcategory-column">19 <span class="${suggestionPrefix}--subcategory-column-text">{{{subcategory}}}</span>20 </div>21 {{#isTextOrSubcategoryNonEmpty}}22 <div class="${suggestionPrefix}--content">23 <div class="${suggestionPrefix}--subcategory-inline">{{{subcategory}}}</div>24 <div class="${suggestionPrefix}--title">{{{title}}}</div>25 {{#text}}<div class="${suggestionPrefix}--text">{{{text}}}</div>{{/text}}26 </div>27 {{/isTextOrSubcategoryNonEmpty}}28 </div>29 </a>30 `,31 suggestionSimple: `32 <div class="${suggestionPrefix}33 {{#isCategoryHeader}}${suggestionPrefix}__main{{/isCategoryHeader}}34 {{#isSubCategoryHeader}}${suggestionPrefix}__secondary{{/isSubCategoryHeader}}35 suggestion-layout-simple36 ">37 <div class="${suggestionPrefix}--category-header">38 {{^isLvl0}}39 <span class="${suggestionPrefix}--category-header-lvl0 ${suggestionPrefix}--category-header-item">{{{category}}}</span>40 {{^isLvl1}}41 {{^isLvl1EmptyOrDuplicate}}42 <span class="${suggestionPrefix}--category-header-lvl1 ${suggestionPrefix}--category-header-item">43 {{{subcategory}}}44 </span>45 {{/isLvl1EmptyOrDuplicate}}46 {{/isLvl1}}47 {{/isLvl0}}48 <div class="${suggestionPrefix}--title ${suggestionPrefix}--category-header-item">49 {{#isLvl2}}50 {{{title}}}51 {{/isLvl2}}52 {{#isLvl1}}53 {{{subcategory}}}54 {{/isLvl1}}55 {{#isLvl0}}56 {{{category}}}57 {{/isLvl0}}58 </div>59 </div>60 <div class="${suggestionPrefix}--wrapper">61 {{#text}}62 <div class="${suggestionPrefix}--content">63 <div class="${suggestionPrefix}--text">{{{text}}}</div>64 </div>65 {{/text}}66 </div>67 </div>68 `,69 footer: `70 <div class="${footerPrefix}">71 </div>72 `,73 empty: `74 <div class="${suggestionPrefix}">75 <div class="${suggestionPrefix}--wrapper">76 <div class="${suggestionPrefix}--content ${suggestionPrefix}--no-results">77 <div class="${suggestionPrefix}--title">78 <div class="${suggestionPrefix}--text">79 No results found for query <b>"{{query}}"</b>80 </div>81 </div>82 </div>83 </div>84 </div>85 `,86 searchBox: `87 <form novalidate="novalidate" onsubmit="return false;" class="searchbox">88 <div role="search" class="searchbox__wrapper">89 <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>90 <button type="submit" title="Submit your search query." class="searchbox__submit" >91 <svg width=12 height=12 role="img" aria-label="Search">92 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>93 </svg>94 </button>95 <button type="reset" title="Clear the search query." class="searchbox__reset hide">96 <svg width=12 height=12 role="img" aria-label="Reset">97 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>98 </svg>99 </button>100 </div>101</form>102<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">103 <svg xmlns="http://www.w3.org/2000/svg">104 <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>105 <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>106 </svg>107</div>108 `,109};...
Using AI Code Generation
1const { Matchers } = require('@pact-foundation/pact')2const { somethingLike: like } = Matchers3const { somethingLike: like } = require('@pact-foundation/pact').Matchers4const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers5const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers6const { somethingLike: like } = require('@pact-foundation/pact').Matchers7const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers8const { somethingLike: like } = require('@pact-foundation/pact').Matchers9const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers10const { somethingLike: like } = require('@pact-foundation/pact').Matchers11const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers12const { somethingLike: like } = require('@pact-foundation/pact').Matchers13const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers14const { somethingLike: like } = require('@pact-foundation/pact').Matchers15const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers16const { somethingLike: like } = require('@pact-foundation/pact').Matchers17const { somethingLike: like } = require('@pact-foundation/pact-node').Matchers18const { somethingLike: like } = require('@pact-foundation/pact').Matchers
Using AI Code Generation
1const { Matchers } = require('@pact-foundation/pact');2const { somethingLike } = Matchers;3module.exports = {4 "id": somethingLike(1),5 "name": somethingLike("Bob"),6 "age": somethingLike(32)7};8const { Matchers } = require('@pact-foundation/pact');9const { somethingLike } = Matchers;10module.exports = {11 "id": somethingLike(1),12 "name": somethingLike("Bob"),13 "age": somethingLike(32)14};15const { Matchers } = require('@pact-foundation/pact');16const { somethingLike } = Matchers;17module.exports = {18 "id": somethingLike(1),19 "name": somethingLike("Bob"),20 "age": somethingLike(32)21};22const { Matchers } = require('@pact-foundation/pact');23const { somethingLike } = Matchers;24module.exports = {25 "id": somethingLike(1),26 "name": somethingLike("Bob"),27 "age": somethingLike(32)28};29const { Matchers } = require('@pact-foundation/pact');30const { somethingLike } = Matchers;31module.exports = {32 "id": somethingLike(1),33 "name": somethingLike("Bob"),34 "age": somethingLike(32)35};36const { Matchers } = require('@pact-foundation/pact');37const { somethingLike } = Matchers;38module.exports = {39 "id": somethingLike(1),40 "name": somethingLike("Bob"),41 "age": somethingLike(32)42};43const { Matchers } = require('@pact-foundation/pact');44const { somethingLike } = Matchers;45module.exports = {46 "id": somethingLike(1),47 "name": somethingLike("Bob"),48 "age": somethingLike(32)49};
Using AI Code Generation
1const { Matchers } = require('@pact-foundation/pact/dsl/matchers');2const { somethingLike: like } = Matchers;3const { getProducts } = require('./products');4describe('Products API', () => {5 describe('getProducts', () => {6 it('returns products', async () => {7 const expected = {8 {9 upc: like('123456789012'),10 description: 'Product 1 (short) description',11 },12 {13 upc: like('123456789012'),14 description: 'Product 2 (short) description',15 }16 };17 await getProducts().then((response) => {18 expect(response.status).toEqual(200);19 expect(response.data).toEqual(expected);20 });21 });22 });23});24const axios = require('axios');25const { Matchers } = require('@pact-foundation/pact/dsl/matchers');26const { somethingLike: like } = Matchers;27const api = axios.create({28 headers: { Accept: 'application/json' }29});30module.exports = {31 getProducts: () => api.get('/products')32};
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!