Skip to content

Commit b2d20bb

Browse files
authored
Merge pull request #5 from paulpopus/fix/tests-and-error-on-website-stats
Fix/tests and error on website stats
2 parents 8581eb6 + d77d764 commit b2d20bb

File tree

4 files changed

+96
-33
lines changed

4 files changed

+96
-33
lines changed

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
UMAMI_API_KEY=
2+
UMAMI_API_CLIENT_ENDPOINT=https://api.umami.is/v1
3+
4+
UMAMI_WEBSITE_ID=

jest.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module.exports = {
2+
testTimeout: 20000,
23
verbose: true,
3-
testEnvironment: 'jsdom',
4+
/* testEnvironment: 'jsdom', */
45
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
56
moduleNameMapper: {
67
'\\.(css|less|jpg|png|svg)$': '<rootDir>/test/mocks/emptyModule.js',

src/UmamiApiClient.ts

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class UmamiApiClient {
5050

5151
log(`GET ${dest}`, params, headers);
5252

53-
return get(dest, undefined, this.getHeaders(headers));
53+
return get(dest, undefined, { ...this.getHeaders(headers), ...{ 'Content-Type': undefined } });
5454
}
5555

5656
post(url: string, params?: object, headers?: object) {
@@ -187,8 +187,8 @@ export class UmamiApiClient {
187187
endAt: string;
188188
unit: string;
189189
timezone: string;
190-
url: string;
191-
eventName: string;
190+
url?: string;
191+
eventName?: string;
192192
},
193193
): Promise<ApiResponse<Umami.WebsiteMetric[]>> {
194194
return this.get(`websites/${websiteId}/events`, params);
@@ -200,17 +200,17 @@ export class UmamiApiClient {
200200
type: string;
201201
startAt: number;
202202
endAt: number;
203-
url: string;
204-
referrer: string;
205-
title: string;
206-
query: string;
207-
event: string;
208-
os: string;
209-
browser: string;
210-
device: string;
211-
country: string;
212-
region: string;
213-
city: string;
203+
url?: string;
204+
referrer?: string;
205+
title?: string;
206+
query?: string;
207+
event?: string;
208+
os?: string;
209+
browser?: string;
210+
device?: string;
211+
country?: string;
212+
region?: string;
213+
city?: string;
214214
},
215215
): Promise<ApiResponse<Umami.WebsiteMetric[]>> {
216216
return this.get(`websites/${websiteId}/metrics`, params);
@@ -243,16 +243,16 @@ export class UmamiApiClient {
243243
startAt: number;
244244
endAt: number;
245245
url: string;
246-
referrer: string;
247-
title: string;
248-
query: string;
249-
event: string;
250-
os: string;
251-
browser: string;
252-
device: string;
253-
country: string;
254-
region: string;
255-
city: string;
246+
referrer?: string;
247+
title?: string;
248+
query?: string;
249+
event?: string;
250+
os?: string;
251+
browser?: string;
252+
device?: string;
253+
country?: string;
254+
region?: string;
255+
city?: string;
256256
},
257257
): Promise<ApiResponse<Umami.WebsiteStats>> {
258258
return this.get(`websites/${websiteId}/stats`, params);

test.js

Lines changed: 66 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,73 @@
1+
require('cross-fetch/polyfill');
12
const apiClient = require('./dist/cjs/index');
23
const dotenv = require('dotenv');
34
dotenv.config();
45

5-
(async () => {
6-
apiClient.client = apiClient.getClient();
6+
describe('Testing all get functions', () => {
7+
beforeAll(() => {
8+
apiClient.client = apiClient.getClient();
9+
return;
10+
});
711

8-
try {
9-
const x = await apiClient.client.getWebsites();
12+
async function testGetWebsites() {
13+
const results = await apiClient.client.getWebsites();
1014

11-
console.log(x);
12-
} catch (e) {
13-
console.log('ERROR', { statusCode: e.statusCode, message: e.message, e });
15+
return results.ok;
1416
}
15-
})();
17+
18+
test('Testing: getWebsites', () => {
19+
return expect(testGetWebsites()).resolves.toBeTruthy();
20+
});
21+
22+
async function testGetMe() {
23+
const results = await apiClient.client.getMe();
24+
return results.ok;
25+
}
26+
27+
test('Testing: getMe', () => {
28+
return expect(testGetMe()).resolves.toBeTruthy();
29+
});
30+
31+
async function testGetWebsiteMetrics() {
32+
const results = await apiClient.client.getWebsiteMetrics(process.env.UMAMI_WEBSITE_ID, {
33+
startAt: 1685566800000,
34+
endAt: 1686916052440,
35+
type: 'url',
36+
});
37+
38+
return results.ok;
39+
}
40+
41+
test('Testing: getWebsiteMetrics', () => {
42+
return expect(testGetWebsiteMetrics()).resolves.toBeTruthy();
43+
});
44+
45+
async function testGetWebsitePageviews() {
46+
const results = await apiClient.client.getWebsitePageviews(process.env.UMAMI_WEBSITE_ID, {
47+
startAt: 1685566800000,
48+
endAt: 1686916052440,
49+
url: '/',
50+
timezone: 'America/Los_Angeles',
51+
});
52+
53+
return results.ok;
54+
}
55+
56+
test('Testing: getWebsitePageviews', () => {
57+
return expect(testGetWebsitePageviews()).resolves.toBeTruthy();
58+
});
59+
60+
async function testGetWebsitesStats() {
61+
const results = await apiClient.client.getWebsiteStats(process.env.UMAMI_WEBSITE_ID, {
62+
startAt: 1685566800000,
63+
endAt: 1686916052440,
64+
url: '/',
65+
});
66+
67+
return results.ok;
68+
}
69+
70+
test('Testing: getWebsitesStats', () => {
71+
return expect(testGetWebsitesStats()).resolves.toBeTruthy();
72+
});
73+
});

0 commit comments

Comments
 (0)