@jphil/bookwhen-client 0.1.0 → 0.2.0

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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  \[wip\]!
4
4
 
5
- An API client library for the [Bookwhen](www.bookwhen.com) booking platform [API (v2)](https://api.bookwhen.com/v2), written in Typescript for NodeJS. Intended for server-side environments.
5
+ An API client library for the [Bookwhen](https://www.bookwhen.com) booking platform [API (v2)](https://api.bookwhen.com/v2), written in Typescript for NodeJS. Intended for server-side environments.
6
6
 
7
7
  ## Table of Contents
8
8
 
@@ -17,7 +17,7 @@ An API client library for the [Bookwhen](www.bookwhen.com) booking platform [API
17
17
 
18
18
  ## Overview
19
19
 
20
- You'll likely be at least somewhat familiar with the [Bookwhen](www.bookwhen.com) booking platform if you've landed here. But if not, you'll want to have a look at their [API (v2) documentation](https://api.bookwhen.com/v2). There's also a nice [Swagger style layout of the Bookwhen API v2 docs](https://petstore.swagger.io/?url=https://api.bookwhen.com/v2/openapi.yaml)
20
+ You'll likely be at least somewhat familiar with the [Bookwhen](https://www.bookwhen.com) booking platform if you've landed here. But if not, you'll want to have a look at their [API (v2) documentation](https://api.bookwhen.com/v2). There's also a nice [Swagger style layout of the Bookwhen API v2 docs](https://petstore.swagger.io/?url=https://api.bookwhen.com/v2/openapi.yaml)
21
21
 
22
22
  ## Features
23
23
 
@@ -67,11 +67,11 @@ Please see the docs in the CONTRIBUTIONS.md file, thanks!
67
67
  - Keep up with any future changes or additions to the [Bookwhen API](https://api.bookwhen.com/v2), additions will be driven mainly by this.
68
68
  - Possibly add a "fields" param to service methods to allow response filtering
69
69
 
70
- - Todos
71
- [] - put Zod in place in more areas to strengthen runtime type guards
72
- [] - refine error handling
73
- [] - write more integration tests
74
- [] - write services for the other integrations
70
+ ### Todos
71
+ - [] put Zod in place in more areas to strengthen runtime type guards
72
+ - [] refine error handling
73
+ - [] write more integration tests
74
+ - [] write services for the other integrations
75
75
 
76
76
  ## License
77
77
 
@@ -28,6 +28,7 @@ export declare class BookwhenClient {
28
28
  interface BookwhenClientOptions {
29
29
  apiKey: string;
30
30
  baseURL?: string;
31
+ debug?: boolean;
31
32
  }
32
33
  /**
33
34
  * Creates an instance of Axios with the provided API key.
@@ -43,12 +43,12 @@ export class BookwhenClient {
43
43
  * @returns The Axios instance.
44
44
  */
45
45
  export function createBookwhenClient(options) {
46
- const { apiKey, baseURL = 'https://api.bookwhen.com/v2' } = options;
46
+ const { apiKey, baseURL = 'https://api.bookwhen.com/v2', debug = false } = options;
47
47
  const axiosInstance = axios.create({
48
- baseURL: 'https://api.bookwhen.com/v2',
48
+ baseURL: baseURL,
49
49
  auth: { username: apiKey, password: '' },
50
50
  });
51
- axiosInstance.interceptors.response.use((response) => response.data ?? response, (error) => {
51
+ axiosInstance.interceptors.response.use((response) => response, (error) => {
52
52
  if (error.response) {
53
53
  const status = error.response.status;
54
54
  const clientError = CLIENT_HTTP_STATUS_CODES[status];
@@ -64,6 +64,15 @@ export function createBookwhenClient(options) {
64
64
  }
65
65
  return Promise.reject(error);
66
66
  });
67
+ if (debug) {
68
+ // Add a request interceptor to log the details
69
+ axiosInstance.interceptors.request.use(request => {
70
+ console.log('Bookwhen Request Debug:', {
71
+ request: request
72
+ });
73
+ return request;
74
+ });
75
+ }
67
76
  return new BookwhenClient(axiosInstance);
68
77
  }
69
78
  //# sourceMappingURL=BookwhenClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookwhenClient.js","sourceRoot":"","sources":["../../src/client/BookwhenClient.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC,CAAE,mDAAmD;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAQL;IAPZ,YAAY,CAAgB;IAEpC;;;;OAIG;IACH,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AAOD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,6BAA6B,EAAE,GAAG,OAAO,CAAC;IAEpE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,6BAA6B;QACtC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;KACzC,CAAC,CAAC;IAEH,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACrC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,EACvC,CAAC,KAAK,EAAE,EAAE;QACR,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;IAEF,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"BookwhenClient.js","sourceRoot":"","sources":["../../src/client/BookwhenClient.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC,CAAE,mDAAmD;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAQL;IAPZ,YAAY,CAAgB;IAEpC;;;;OAIG;IACH,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AAQD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,6BAA6B,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEnF,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;KACzC,CAAC,CAAC;IAEH,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACrC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAK,EAAE,EAAE;QACR,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;IAEF,IAAG,KAAK,EAAE,CAAC;QACT,+CAA+C;QAC/C,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE;gBACrC,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,3 @@
1
- import * as dotenv from 'dotenv';
2
- dotenv.config();
3
1
  export * from './types/GlobalTypes.js';
4
2
  export * from './services/event/EventInterfaces.js';
5
3
  export { createBookwhenClient } from './client/BookwhenClient.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -36,16 +36,6 @@ export class BookwhenRequest {
36
36
  for (let key in filters) {
37
37
  let value = filters[key];
38
38
  if (Array.isArray(value) && value && value.length > 0) {
39
- // const encodedValues = value.map((v: string) => {
40
- // console.log('typeof v', typeof v);
41
- // if (typeof v === 'undefined') {
42
- // return '';
43
- // }
44
- // if (v.length === 0) {
45
- // return '';
46
- // }
47
- // return encodeURIComponent(v);
48
- // }).join(',');
49
39
  const encodedValues = value
50
40
  .filter((v) => typeof v === 'string' && v.length > 0)
51
41
  .map((v) => encodeURIComponent(v))
@@ -1 +1 @@
1
- {"version":3,"file":"BookwhenRequest.js","sourceRoot":"","sources":["../../src/request/BookwhenRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BookwhenRequest.js","sourceRoot":"","sources":["../../src/request/BookwhenRequest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jphil/bookwhen-client",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -25,7 +25,9 @@
25
25
  "url": "https://github.com/justinphilpott/bookwhen-client.git"
26
26
  },
27
27
  "files": [
28
- "dist"
28
+ "dist",
29
+ "README.md",
30
+ "LICENSE"
29
31
  ],
30
32
  "license": "ISC",
31
33
  "devDependencies": {
@@ -37,7 +39,6 @@
37
39
  "@typescript-eslint/eslint-plugin": "^8.13.0",
38
40
  "@typescript-eslint/parser": "^8.13.0",
39
41
  "@vitest/coverage-v8": "2.1.3",
40
- "axios": "^1.7.7",
41
42
  "c8": "^10.1.2",
42
43
  "commitizen": "^4.3.1",
43
44
  "cz-conventional-changelog": "^3.3.0",
@@ -51,14 +52,17 @@
51
52
  "typescript": "^5.6.3",
52
53
  "vite": "^5.4.10",
53
54
  "vite-tsconfig-paths": "^5.1.0",
54
- "vitest": "^2.1.3",
55
- "zod": "^3.23.8"
55
+ "vitest": "^2.1.3"
56
56
  },
57
57
  "config": {
58
58
  "commitizen": {
59
59
  "path": "./node_modules/cz-conventional-changelog"
60
60
  }
61
61
  },
62
+ "dependencies": {
63
+ "axios": "^1.7.7",
64
+ "zod": "^3.23.8"
65
+ },
62
66
  "scripts": {
63
67
  "dev": "vitest",
64
68
  "build": "tsc",
@@ -1 +0,0 @@
1
- export {};
@@ -1,78 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { BookwhenClient } from './BookwhenClient.js';
3
- import { EventService } from '../services/event/Event.js';
4
- vi.mock('axios');
5
- vi.mock('../src/services/event/Event');
6
- describe('BookwhenClient Integration', () => {
7
- describe('BookwhenClient - Events Service', () => {
8
- it('should call the correct endpoint when getById is called', async () => {
9
- const mockAxiosInstance = {
10
- get: vi.fn().mockResolvedValue({
11
- data: {
12
- data: { id: 'event123' }
13
- }
14
- }),
15
- };
16
- const client = new BookwhenClient(mockAxiosInstance);
17
- const eventId = 'event123';
18
- const event = await client.events.getById({ eventId });
19
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events/event123');
20
- expect(event).toEqual({ id: 'event123' });
21
- });
22
- it('should call the correct endpoint with correct parameters when events.getMultiple is called', async () => {
23
- const mockAxiosInstance = {
24
- get: vi.fn().mockResolvedValue({
25
- data: {
26
- data: [{ id: 'event1' }, { id: 'event2' }],
27
- },
28
- }),
29
- };
30
- const client = new BookwhenClient(mockAxiosInstance);
31
- const includes = ['location', 'tickets'];
32
- const filters = {
33
- title: ['Workshop'],
34
- start_at: ['2023-01-01']
35
- };
36
- const eventsData = [
37
- { id: '1', type: 'event' },
38
- { id: '2', type: 'event' },
39
- ];
40
- const events = await client.events.getMultiple({ includes, filters });
41
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events?filter[title]=Workshop&filter[start_at]=2023-01-01&include=location,tickets');
42
- expect(events).toEqual([{ id: 'event1' }, { id: 'event2' }]);
43
- });
44
- it('should correctly initialize and expose the events service via the client', () => {
45
- const mockAxiosInstance = {};
46
- const client = new BookwhenClient(mockAxiosInstance);
47
- const eventsService = client.events;
48
- expect(eventsService).toBeInstanceOf(EventService);
49
- });
50
- it('should use the same axios instance in events service as in the BookwhenClient', () => {
51
- const mockAxiosInstance = {};
52
- const client = new BookwhenClient(mockAxiosInstance);
53
- const eventsService = client.events;
54
- expect(eventsService['axiosInstance']).toBe(client['axiosInstance']);
55
- });
56
- it('should handle errors thrown by the events service methods', async () => {
57
- const mockAxiosInstance = {
58
- get: vi.fn().mockRejectedValue(new Error('Network Error')),
59
- };
60
- const client = new BookwhenClient(mockAxiosInstance);
61
- // @ts-ignore - Testing invalid parameter type
62
- await expect(client.events.getById(453453)).rejects.toThrow('events.getById: Schema Validation failed: Expected object, received number');
63
- // @ts-ignore - Testing invalid parameter type
64
- await expect(client.events.getById('invalidId')).rejects.toThrow('events.getById: Schema Validation failed: Expected object, received string');
65
- });
66
- it('should correctly pass filters and includes to events.getMultiple method', async () => {
67
- const mockAxiosInstance = {
68
- get: vi.fn().mockResolvedValue({ data: { data: [] } }),
69
- };
70
- const client = new BookwhenClient(mockAxiosInstance);
71
- const filters = { tag: ['workshop', 'seminar'], from: '20220101' };
72
- const includes = ['location', 'tickets.events'];
73
- await client.events.getMultiple({ filters, includes });
74
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events?filter[tag]=workshop,seminar&filter[from]=20220101&include=location,tickets.events');
75
- });
76
- });
77
- });
78
- //# sourceMappingURL=BookwhenClient.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BookwhenClient.integration.test.js","sourceRoot":"","sources":["../../src/client/BookwhenClient.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import axios from 'axios';
3
- import { createBookwhenClient } from './BookwhenClient.js';
4
- import { BookwhenClient } from './BookwhenClient.js';
5
- import { EventService } from '../services/event/Event.js';
6
- vi.mock('axios');
7
- vi.mock('../src/services/event/Event');
8
- describe('BookwhenClient', () => {
9
- it('should throw an error if axiosInstance is not provided', () => {
10
- expect(() => new BookwhenClient(undefined)).toThrowError('BookwhenClient - you must provide an axios instance');
11
- });
12
- it('should assign axiosInstance correctly', () => {
13
- const mockAxiosInstance = {};
14
- const client = new BookwhenClient(mockAxiosInstance);
15
- expect(client['axiosInstance']).toBe(mockAxiosInstance);
16
- });
17
- it('should expose EventService via getter', () => {
18
- const mockAxiosInstance = {};
19
- const client = new BookwhenClient(mockAxiosInstance);
20
- const eventService = client.events;
21
- expect(eventService['axiosInstance']).toBe(mockAxiosInstance);
22
- expect(eventService).toBeInstanceOf(EventService);
23
- });
24
- it('should share axiosInstance with EventService', () => {
25
- const mockAxiosInstance = {};
26
- const client = new BookwhenClient(mockAxiosInstance);
27
- const eventService = client.events;
28
- expect(eventService['axiosInstance']).toBe(mockAxiosInstance);
29
- });
30
- });
31
- describe('createBookwhenClient', () => {
32
- let mockAxiosInstance;
33
- beforeEach(() => {
34
- // Create mock axios instance with interceptors
35
- mockAxiosInstance = {
36
- interceptors: {
37
- response: {
38
- use: vi.fn()
39
- },
40
- request: {
41
- use: vi.fn()
42
- }
43
- }
44
- };
45
- // Mock axios.create to return our mock instance
46
- vi.spyOn(axios, 'create').mockReturnValue(mockAxiosInstance);
47
- });
48
- it('should create an axiosInstance with correct config and return a BookwhenClient', () => {
49
- const apiKey = 'test-api-key';
50
- const client = createBookwhenClient({ apiKey });
51
- expect(axios.create).toHaveBeenCalledWith({
52
- baseURL: 'https://api.bookwhen.com/v2',
53
- auth: { username: apiKey, password: '' },
54
- });
55
- expect(mockAxiosInstance.interceptors.response.use).toHaveBeenCalled();
56
- expect(client).toBeInstanceOf(BookwhenClient);
57
- });
58
- it('should handle errors using the interceptor', async () => {
59
- const axiosInstance = axios.create();
60
- const errorResponse = { response: { status: 400 } };
61
- vi.spyOn(axios, 'create').mockReturnValue(axiosInstance);
62
- // Mock the interceptor
63
- const interceptor = vi.fn();
64
- axiosInstance.interceptors.response.use = interceptor;
65
- createBookwhenClient({ apiKey: 'test-api-key' });
66
- const [, errorHandler] = interceptor.mock.calls[0];
67
- await expect(errorHandler(errorResponse)).rejects.toThrowError('BookwhenClient: Bad request');
68
- });
69
- });
70
- //# sourceMappingURL=BookwhenClient.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BookwhenClient.unit.test.js","sourceRoot":"","sources":["../../src/client/BookwhenClient.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import * as dotenv from 'dotenv';
3
- import { createBookwhenClient } from './index.js';
4
- dotenv.config();
5
- describe('index.ts', () => {
6
- it('should load environment variables', () => {
7
- expect(process.env).toHaveProperty('NODE_ENV');
8
- });
9
- it('should export BookwhenClient', () => {
10
- expect(createBookwhenClient).toBeDefined();
11
- });
12
- });
13
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,141 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { BookwhenRequest } from './BookwhenRequest.js';
3
- describe('BookwhenRequest', () => {
4
- const testpath = "path";
5
- describe('path handling', () => {
6
- it('should return a /"path" when called with "path"', () => {
7
- const request = new BookwhenRequest(testpath);
8
- expect(request.toString()).toBe('/' + testpath);
9
- });
10
- it('should throw an error if the path is empty', () => {
11
- expect(() => new BookwhenRequest('')).toThrow('Path is required');
12
- });
13
- it('should throw an error if the path is undefined', () => {
14
- expect(() => new BookwhenRequest(undefined)).toThrow('Path is required');
15
- });
16
- });
17
- describe('addIncludes', () => {
18
- it('should return the given path with an empty string when no resources are provided', () => {
19
- const resources = [];
20
- const query = new BookwhenRequest(testpath);
21
- query.addIncludes(resources);
22
- expect(query.toString()).toEqual('/' + testpath);
23
- });
24
- it('should return a query string with a single resource', () => {
25
- const resources = ['resource1'];
26
- const query = new BookwhenRequest(testpath);
27
- query.addIncludes(resources);
28
- expect(query.toString()).toEqual('/' + testpath + '?include=resource1');
29
- });
30
- it('should return a query string with multiple resources separated by commas', () => {
31
- const resources = ['resource1', 'resource2', 'resource3'];
32
- const query = new BookwhenRequest(testpath);
33
- query.addIncludes(resources);
34
- expect(query.toString()).toEqual('/' + testpath + '?include=resource1,resource2,resource3');
35
- });
36
- });
37
- describe('addFilters', () => {
38
- it('should return a query with no filters, if an empty filters array is given', () => {
39
- const filters = {};
40
- const query = new BookwhenRequest(testpath);
41
- query.addFilters(filters);
42
- expect(query.toString()).toEqual('/' + testpath);
43
- });
44
- it('should return a query string with a single filter', () => {
45
- const filters = { 'key': "value" };
46
- const query = new BookwhenRequest(testpath);
47
- query.addFilters(filters);
48
- expect(query.toString()).toEqual('/' + testpath + '?filter[key]=value');
49
- });
50
- it('should return a query string with a single filter and multiple values', () => {
51
- const filters = { 'key': ['value one', 'value two'] };
52
- const query = new BookwhenRequest(testpath);
53
- query.addFilters(filters);
54
- expect(query.toString()).toEqual('/' + testpath + '?filter[key]=value%20one,value%20two');
55
- });
56
- it('should return a query string with multiple filters where values are strings', () => {
57
- const filters = {
58
- title: 'advanced',
59
- detail: 'masterclass',
60
- };
61
- const query = new BookwhenRequest(testpath);
62
- query.addFilters(filters);
63
- expect(query.toString()).toEqual('/' + testpath + '?filter[title]=advanced&filter[detail]=masterclass');
64
- });
65
- it('should return a query string with multiple filters where values are arrays of strings', () => {
66
- const filters = {
67
- title: ['title1', 'title2'],
68
- detail: ['detail1', 'detail2', 'detail3'],
69
- };
70
- const query = new BookwhenRequest(testpath);
71
- query.addFilters(filters);
72
- expect(query.toString()).toEqual('/' + testpath + '?filter[title]=title1,title2&filter[detail]=detail1,detail2,detail3');
73
- });
74
- it('should ignore empty string filter values', () => {
75
- const filters = { key: '', key2: 'value' };
76
- const query = new BookwhenRequest(testpath);
77
- query.addFilters(filters);
78
- expect(query.toString()).toEqual('/' + testpath + '?filter[key2]=value');
79
- });
80
- it('should ignore undefined filter values', () => {
81
- const filters = { key: undefined, key2: 'value' };
82
- const query = new BookwhenRequest(testpath);
83
- query.addFilters(filters);
84
- expect(query.toString()).toEqual('/' + testpath + '?filter[key2]=value');
85
- });
86
- it('should ignore null filter values', () => {
87
- const filters = { key: null, key2: 'value' };
88
- const query = new BookwhenRequest(testpath);
89
- query.addFilters(filters);
90
- expect(query.toString()).toEqual('/' + testpath + '?filter[key2]=value');
91
- });
92
- it('should ignore an "empty array" filter value', () => {
93
- const filters = { key: [] };
94
- const query = new BookwhenRequest(testpath);
95
- query.addFilters(filters);
96
- expect(query.toString()).toEqual('/' + testpath);
97
- });
98
- it('should ignore empty string elements, where a filter value is an array', () => {
99
- const filters = { key: ['', 'value'] };
100
- const query = new BookwhenRequest(testpath);
101
- expect(query.toString()).toEqual('/' + testpath);
102
- });
103
- it('should ignore undefined array elements, where a filter value is an array', () => {
104
- const filters = { key: [undefined, 'value'], key2: 'value2' };
105
- const query = new BookwhenRequest(testpath);
106
- query.addFilters(filters);
107
- expect(query.toString()).toEqual('/' + testpath + '?filter[key]=value&filter[key2]=value2');
108
- });
109
- it('should ignore null array elements, where a filter value is an array', () => {
110
- const filters = { key: [null, 'value'], key2: 'value2' };
111
- const query = new BookwhenRequest(testpath);
112
- query.addFilters(filters);
113
- expect(query.toString()).toEqual('/' + testpath + '?filter[key]=value&filter[key2]=value2');
114
- });
115
- it('should return a query string with a single filter when value is an array with a single value', () => {
116
- const filters = { key: ['value'] };
117
- const query = new BookwhenRequest(testpath);
118
- query.addFilters(filters);
119
- expect(query.toString()).toEqual('/' + testpath + '?filter[key]=value');
120
- });
121
- it('should build a URL query string from the provided parameters, skipping invalid value types', () => {
122
- const params = {
123
- key1: 'value1',
124
- key2: ['value2', null, 'value3', ''],
125
- key3: undefined,
126
- key4: ['key3skipped', undefined, '123'],
127
- key5: "1234",
128
- key6: null,
129
- key7: undefined,
130
- key8: [],
131
- key9: 'undefined',
132
- };
133
- const expectedFilterString = '/path?filter[key1]=value1&filter[key2]=value2,value3&filter[key4]=key3skipped,123&filter[key5]=1234&filter[key9]=undefined';
134
- const query = new BookwhenRequest(testpath);
135
- // @ts-ignore
136
- query.addFilters(params);
137
- expect(query.toString()).toEqual(expectedFilterString);
138
- });
139
- });
140
- });
141
- //# sourceMappingURL=BookwhenRequest.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BookwhenRequest.unit.test.js","sourceRoot":"","sources":["../../src/request/BookwhenRequest.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,104 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import axios from 'axios';
3
- import { EventService } from './Event.js';
4
- describe('EventService', () => {
5
- let eventService;
6
- let mockAxiosInstance;
7
- beforeEach(() => {
8
- // Create a mock instance of axios for dependency injection
9
- mockAxiosInstance = axios.create();
10
- eventService = new EventService(mockAxiosInstance); // Inject mock axios instance
11
- });
12
- afterEach(() => {
13
- vi.restoreAllMocks();
14
- });
15
- it('should retrieve a single event by ID', async () => {
16
- const eventId = '123';
17
- const eventData = {
18
- id: eventId,
19
- };
20
- // Mock Axios request using vi.spyOn
21
- mockAxiosInstance.get = vi.fn().mockResolvedValue({ data: { data: eventData } });
22
- const result = await eventService.getById({ eventId });
23
- expect(mockAxiosInstance.get).toHaveBeenCalledWith(`/events/${eventId}`);
24
- expect(result).toEqual(eventData);
25
- });
26
- it('should handle error when retrieving a single event by ID', async () => {
27
- const eventId = '123';
28
- const errorMessage = 'Event not found. Please check the event ID and try again.';
29
- // Mock Axios request using vi.spyOn
30
- vi.spyOn(mockAxiosInstance, 'get').mockRejectedValue({
31
- response: {
32
- status: 404,
33
- data: { message: errorMessage }
34
- }
35
- });
36
- expect(eventService.getById({ eventId })).rejects.toThrow(errorMessage);
37
- });
38
- it('should handle error when retrieving multiple events', async () => {
39
- const errorMessage = 'BookwhenClient: The requested resource could not be found';
40
- // Mock Axios request using vi.spyOn
41
- vi.spyOn(mockAxiosInstance, 'get').mockRejectedValue({
42
- response: {
43
- status: 404,
44
- data: { message: errorMessage }
45
- }
46
- });
47
- expect(eventService.getMultiple()).rejects.toThrow(errorMessage);
48
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events');
49
- });
50
- it('should retrieve multiple events', async () => {
51
- const eventsData = [
52
- { id: '1', type: 'event' },
53
- { id: '2', type: 'event' },
54
- ];
55
- // Mock Axios request using vi.spyOn
56
- vi.spyOn(mockAxiosInstance, 'get').mockResolvedValue({ data: { data: eventsData } });
57
- const result = await eventService.getMultiple();
58
- expect(result).toEqual(eventsData);
59
- });
60
- it('should retrieve multiple events with filters', async () => {
61
- const filters = {
62
- title: ['Test Event'],
63
- from: 'test',
64
- detail: ['Event Details'],
65
- };
66
- const eventsData = [
67
- { id: '1', type: 'event' },
68
- { id: '2', type: 'event' },
69
- ];
70
- // Mock Axios request using vi.spyOn
71
- vi.spyOn(mockAxiosInstance, 'get').mockResolvedValue({ data: { data: eventsData } });
72
- const result = await eventService.getMultiple({ filters });
73
- expect(result).toEqual(eventsData);
74
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events?filter[title]=Test%20Event&filter[from]=test&filter[detail]=Event%20Details');
75
- });
76
- it('should retrieve multiple events with includes', async () => {
77
- const includes = ['location', 'attachments'];
78
- const eventsData = [
79
- { id: '1', type: 'event' },
80
- { id: '2', type: 'event' },
81
- ];
82
- // Mock Axios request using vi.spyOn
83
- vi.spyOn(mockAxiosInstance, 'get').mockResolvedValue({ data: { data: eventsData } });
84
- const result = await eventService.getMultiple({ includes });
85
- expect(result).toEqual(eventsData);
86
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events?include=location,attachments');
87
- });
88
- it('should retrieve multiple events with includes and filters', async () => {
89
- const includes = ['location', 'tickets'];
90
- const filters = {
91
- title: ['Workshop'],
92
- start_at: ['2023-01-01']
93
- };
94
- const eventsData = [
95
- { id: '1', type: 'event' },
96
- { id: '2', type: 'event' },
97
- ];
98
- vi.spyOn(mockAxiosInstance, 'get').mockResolvedValue({ data: { data: eventsData } });
99
- const result = await eventService.getMultiple({ filters, includes });
100
- expect(result).toEqual(eventsData);
101
- expect(mockAxiosInstance.get).toHaveBeenCalledWith('/events?filter[title]=Workshop&filter[start_at]=2023-01-01&include=location,tickets');
102
- });
103
- });
104
- //# sourceMappingURL=Event.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Event.unit.test.js","sourceRoot":"","sources":["../../../src/services/event/Event.unit.test.ts"],"names":[],"mappings":"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"}