@nimee/api-clients 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { IUserEventModel } from "@nimee/shared-types";
1
2
  export declare class TicketClient {
2
3
  getTicketById(params: {
3
4
  token: string;
@@ -9,4 +10,5 @@ export declare class TicketClient {
9
10
  token: string;
10
11
  ticketIds: string[];
11
12
  }): Promise<any>;
13
+ static extractTickets(arr: IUserEventModel[]): string[];
12
14
  }
@@ -36,6 +36,21 @@ class TicketClient {
36
36
  return response === null || response === void 0 ? void 0 : response.data;
37
37
  });
38
38
  }
39
+ static extractTickets(arr) {
40
+ const tickets = [];
41
+ arr.forEach((item) => {
42
+ var _a;
43
+ if ((_a = item.ticketsInfo) === null || _a === void 0 ? void 0 : _a.length) {
44
+ item.ticketsInfo.forEach((ticketInfo) => {
45
+ tickets.push(ticketInfo.ticket);
46
+ });
47
+ }
48
+ else if (item.ticket) {
49
+ tickets.push(item.ticket);
50
+ }
51
+ });
52
+ return tickets;
53
+ }
39
54
  }
40
55
  exports.TicketClient = TicketClient;
41
56
  //# sourceMappingURL=ticket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../src/ticket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;AAC/F,MAAM,SAAS,GAAG,GAAG,QAAQ,eAAe,CAAC;AAE7C,MAAa,YAAY;IACjB,aAAa,CAAC,MAA+E;;YACjG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,SAAS,YAAY,SAAS,IAAI,OAAO,IAAI,QAAQ,EAAE,EAAE;gBAC3F,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE;aAC7B,CAAC,CAAC;YACH,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;QACxB,CAAC;KAAA;IACK,0BAA0B,CAAC,MAA8C;;YAC7E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,SAAS,6BAA6B,EACzC,EAAE,SAAS,EAAE,EACb;gBACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE;aAC7B,CACF,CAAC;YACF,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;QACxB,CAAC;KAAA;CACF;AAnBD,oCAmBC"}
1
+ {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../src/ticket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;AAC/F,MAAM,SAAS,GAAG,GAAG,QAAQ,eAAe,CAAC;AAE7C,MAAa,YAAY;IACjB,aAAa,CAAC,MAA+E;;YACjG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,SAAS,YAAY,SAAS,IAAI,OAAO,IAAI,QAAQ,EAAE,EAAE;gBAC3F,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE;aAC7B,CAAC,CAAC;YACH,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;QACxB,CAAC;KAAA;IACK,0BAA0B,CAAC,MAA8C;;YAC7E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,SAAS,6BAA6B,EACzC,EAAE,SAAS,EAAE,EACb;gBACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE;aAC7B,CACF,CAAC;YACF,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;QACxB,CAAC;KAAA;IACD,MAAM,CAAC,cAAc,CAAC,GAAsB;QAC1C,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAqB,EAAE,EAAE;;YACpC,IAAI,MAAA,IAAI,CAAC,WAAW,0CAAE,MAAM,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAA4B,EAAE,EAAE;oBACxD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAhCD,oCAgCC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const tests_1 = require("@nimee/tests");
16
+ const mongoose_1 = __importDefault(require("mongoose"));
17
+ const ticket_1 = require("../src/ticket");
18
+ describe("ticket client", () => {
19
+ test("when calling extract tickets from user events array with ticketsInfo array, all tickets extract correctly", () => __awaiter(void 0, void 0, void 0, function* () {
20
+ // Arrange
21
+ const eventId = new mongoose_1.default.Types.ObjectId();
22
+ const accountId = new mongoose_1.default.Types.ObjectId();
23
+ const ticketId1 = new mongoose_1.default.Types.ObjectId();
24
+ const ticketId2 = new mongoose_1.default.Types.ObjectId();
25
+ const helper = new tests_1.Helper();
26
+ const userEvent1 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId1.toString()], false);
27
+ const userEvent2 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], false);
28
+ const userEvent3 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString(), ticketId2.toString(), ticketId1.toString()], false);
29
+ // ACT
30
+ const tickets = ticket_1.TicketClient.extractTickets([userEvent1, userEvent2, userEvent3]);
31
+ // Assert
32
+ expect(tickets.length).toBe(5);
33
+ expect(tickets).toEqual([
34
+ ticketId1.toString(),
35
+ ticketId2.toString(),
36
+ ticketId2.toString(),
37
+ ticketId2.toString(),
38
+ ticketId1.toString(),
39
+ ]);
40
+ }));
41
+ test("when calling extract tickets from user events array with ticket (legacy), all tickets extract correctly", () => __awaiter(void 0, void 0, void 0, function* () {
42
+ // Arrange
43
+ const eventId = new mongoose_1.default.Types.ObjectId();
44
+ const accountId = new mongoose_1.default.Types.ObjectId();
45
+ const ticketId1 = new mongoose_1.default.Types.ObjectId();
46
+ const ticketId2 = new mongoose_1.default.Types.ObjectId();
47
+ const helper = new tests_1.Helper();
48
+ const userEvent1 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId1.toString()], true);
49
+ const userEvent2 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], true);
50
+ const userEvent3 = yield helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], true);
51
+ // ACT
52
+ const tickets = ticket_1.TicketClient.extractTickets([userEvent1, userEvent2, userEvent3]);
53
+ // Assert
54
+ expect(tickets.length).toBe(3);
55
+ expect(tickets).toEqual([ticketId1.toString(), ticketId2.toString(), ticketId2.toString()]);
56
+ }));
57
+ });
58
+ //# sourceMappingURL=ticket.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.test.js","sourceRoot":"","sources":["../../tests/ticket.test.ts"],"names":[],"mappings":"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"}
package/jest.config.js ADDED
@@ -0,0 +1,21 @@
1
+ const config = require("@nimee/tests");
2
+
3
+ const { clearMocks, coverageDirectory, collectCoverage, coverageReporters, forceExit, transform, testTimeout } =
4
+ config.jestConfig;
5
+
6
+ module.exports = {
7
+ setupFiles: ["dotenv/config"],
8
+ globalSetup: "../../node_modules/@nimee/tests/setup/global-setup.js",
9
+ globalTeardown: "../../node_modules/@nimee/tests/setup/global-teardown.js",
10
+ setupFilesAfterEnv: ["../../node_modules/@nimee/tests/setup/after-env-setup.js"],
11
+ clearMocks: clearMocks,
12
+ coverageDirectory: coverageDirectory,
13
+ testEnvironment: "node",
14
+ collectCoverage: collectCoverage,
15
+ coverageReporters: coverageReporters,
16
+ forceExit: forceExit,
17
+ transform: { "^.+\\.tsx?$": "ts-jest" },
18
+ testTimeout: testTimeout,
19
+ modulePathIgnorePatterns: ["<rootDir>/test-client/", "<rootDir>/dist/"],
20
+ transformIgnorePatterns: ["node_modules/(?!axios)"],
21
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nimee/api-clients",
3
- "version": "1.1.5",
3
+ "version": "1.1.6",
4
4
  "description": "communication http for each ms",
5
5
  "main": "dist/src/index.js",
6
6
  "author": "dan goldberg",
@@ -17,18 +17,24 @@
17
17
  "i-all-workspaces": "version=${npm_package_version} npm i @nimee/api-clients@$version --workspace=@nimee/event --workspace=@nimee/user-event --workspace=@nimee/send-notification --workspace=@nimee/user --workspace=@nimee/payment --workspace=@nimee/analytics"
18
18
  },
19
19
  "devDependencies": {
20
+ "@nimee/tests": "0.0.3",
20
21
  "@typescript-eslint/eslint-plugin": "^5.18.0",
21
22
  "@typescript-eslint/eslint-plugin-tslint": "^5.18.0",
22
23
  "@typescript-eslint/parser": "^5.18.0",
23
24
  "eslint": "8.22.0",
24
25
  "eslint-plugin-jsdoc": "^38.1.6",
25
26
  "eslint-plugin-no-null": "^1.0.2",
27
+ "jest": "^29.0.0",
28
+ "jest-junit": "^12.0.0",
29
+ "nock": "^13.0.5",
26
30
  "nodemon": "^1.19.1",
31
+ "sinon": "^9.2.1",
32
+ "ts-jest": "^29.0.0",
27
33
  "typescript": "^4.8.3"
28
34
  },
29
35
  "types": "dist/src/index.d.ts",
30
36
  "dependencies": {
31
- "@nimee/logger": "1.0.21",
37
+ "@nimee/logger": "1.0.22",
32
38
  "@nimee/shared-types": "^1.0.35",
33
39
  "axios": "1.2.1"
34
40
  }
package/src/ticket.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ITicketInfoModel, IUserEventModel } from "@nimee/shared-types";
1
2
  import axios from "axios";
2
3
  const port = process.env.EVENT_PORT;
3
4
  const basePath = process.env.IS_LOCAL === "true" ? `http://localhost:${port}` : "http://event";
@@ -22,4 +23,17 @@ export class TicketClient {
22
23
  );
23
24
  return response?.data;
24
25
  }
26
+ static extractTickets(arr: IUserEventModel[]): string[] {
27
+ const tickets: Array<string> = [];
28
+ arr.forEach((item: IUserEventModel) => {
29
+ if (item.ticketsInfo?.length) {
30
+ item.ticketsInfo.forEach((ticketInfo: ITicketInfoModel) => {
31
+ tickets.push(ticketInfo.ticket);
32
+ });
33
+ } else if (item.ticket) {
34
+ tickets.push(item.ticket);
35
+ }
36
+ });
37
+ return tickets;
38
+ }
25
39
  }
@@ -0,0 +1,50 @@
1
+ import { Helper } from "@nimee/tests";
2
+ import mongoose from "mongoose";
3
+ import { TicketClient } from "../src/ticket";
4
+ describe("ticket client", () => {
5
+ test("when calling extract tickets from user events array with ticketsInfo array, all tickets extract correctly", async () => {
6
+ // Arrange
7
+ const eventId = new mongoose.Types.ObjectId();
8
+ const accountId = new mongoose.Types.ObjectId();
9
+ const ticketId1 = new mongoose.Types.ObjectId();
10
+ const ticketId2 = new mongoose.Types.ObjectId();
11
+
12
+ const helper = new Helper();
13
+ const userEvent1 = await helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId1.toString()], false);
14
+ const userEvent2 = await helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], false);
15
+ const userEvent3 = await helper.createUserEvent(
16
+ eventId.toString(),
17
+ accountId.toString(),
18
+ [ticketId2.toString(), ticketId2.toString(), ticketId1.toString()],
19
+ false
20
+ );
21
+ // ACT
22
+ const tickets = TicketClient.extractTickets([userEvent1, userEvent2, userEvent3]);
23
+ // Assert
24
+ expect(tickets.length).toBe(5);
25
+ expect(tickets).toEqual([
26
+ ticketId1.toString(),
27
+ ticketId2.toString(),
28
+ ticketId2.toString(),
29
+ ticketId2.toString(),
30
+ ticketId1.toString(),
31
+ ]);
32
+ });
33
+ test("when calling extract tickets from user events array with ticket (legacy), all tickets extract correctly", async () => {
34
+ // Arrange
35
+ const eventId = new mongoose.Types.ObjectId();
36
+ const accountId = new mongoose.Types.ObjectId();
37
+ const ticketId1 = new mongoose.Types.ObjectId();
38
+ const ticketId2 = new mongoose.Types.ObjectId();
39
+
40
+ const helper = new Helper();
41
+ const userEvent1 = await helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId1.toString()], true);
42
+ const userEvent2 = await helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], true);
43
+ const userEvent3 = await helper.createUserEvent(eventId.toString(), accountId.toString(), [ticketId2.toString()], true);
44
+ // ACT
45
+ const tickets = TicketClient.extractTickets([userEvent1, userEvent2, userEvent3]);
46
+ // Assert
47
+ expect(tickets.length).toBe(3);
48
+ expect(tickets).toEqual([ticketId1.toString(), ticketId2.toString(), ticketId2.toString()]);
49
+ });
50
+ });