forked from mirrored/github-readme-stats
6d6b87c359
* build(deps-dev): bump jest from 29.7.0 to 30.2.0 Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.7.0 to 30.2.0. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-version: 30.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * migration --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alexandr <qwerty541zxc@gmail.com>
147 lines
3.8 KiB
JavaScript
147 lines
3.8 KiB
JavaScript
import { afterEach, describe, expect, it, jest } from "@jest/globals";
|
|
import "@testing-library/jest-dom";
|
|
import axios from "axios";
|
|
import MockAdapter from "axios-mock-adapter";
|
|
import wakatime from "../api/wakatime.js";
|
|
import { renderWakatimeCard } from "../src/cards/wakatime.js";
|
|
import { CACHE_TTL, DURATIONS } from "../src/common/cache.js";
|
|
|
|
const wakaTimeData = {
|
|
data: {
|
|
categories: [
|
|
{
|
|
digital: "22:40",
|
|
hours: 22,
|
|
minutes: 40,
|
|
name: "Coding",
|
|
percent: 100,
|
|
text: "22 hrs 40 mins",
|
|
total_seconds: 81643.570077,
|
|
},
|
|
],
|
|
daily_average: 16095,
|
|
daily_average_including_other_language: 16329,
|
|
days_including_holidays: 7,
|
|
days_minus_holidays: 5,
|
|
editors: [
|
|
{
|
|
digital: "22:40",
|
|
hours: 22,
|
|
minutes: 40,
|
|
name: "VS Code",
|
|
percent: 100,
|
|
text: "22 hrs 40 mins",
|
|
total_seconds: 81643.570077,
|
|
},
|
|
],
|
|
holidays: 2,
|
|
human_readable_daily_average: "4 hrs 28 mins",
|
|
human_readable_daily_average_including_other_language: "4 hrs 32 mins",
|
|
human_readable_total: "22 hrs 21 mins",
|
|
human_readable_total_including_other_language: "22 hrs 40 mins",
|
|
id: "random hash",
|
|
is_already_updating: false,
|
|
is_coding_activity_visible: true,
|
|
is_including_today: false,
|
|
is_other_usage_visible: true,
|
|
is_stuck: false,
|
|
is_up_to_date: true,
|
|
languages: [
|
|
{
|
|
digital: "0:19",
|
|
hours: 0,
|
|
minutes: 19,
|
|
name: "Other",
|
|
percent: 1.43,
|
|
text: "19 mins",
|
|
total_seconds: 1170.434361,
|
|
},
|
|
{
|
|
digital: "0:01",
|
|
hours: 0,
|
|
minutes: 1,
|
|
name: "TypeScript",
|
|
percent: 0.1,
|
|
text: "1 min",
|
|
total_seconds: 83.293809,
|
|
},
|
|
{
|
|
digital: "0:00",
|
|
hours: 0,
|
|
minutes: 0,
|
|
name: "YAML",
|
|
percent: 0.07,
|
|
text: "0 secs",
|
|
total_seconds: 54.975151,
|
|
},
|
|
],
|
|
operating_systems: [
|
|
{
|
|
digital: "22:40",
|
|
hours: 22,
|
|
minutes: 40,
|
|
name: "Mac",
|
|
percent: 100,
|
|
text: "22 hrs 40 mins",
|
|
total_seconds: 81643.570077,
|
|
},
|
|
],
|
|
percent_calculated: 100,
|
|
range: "last_7_days",
|
|
status: "ok",
|
|
timeout: 15,
|
|
total_seconds: 80473.135716,
|
|
total_seconds_including_other_language: 81643.570077,
|
|
user_id: "random hash",
|
|
username: "anuraghazra",
|
|
writes_only: false,
|
|
},
|
|
};
|
|
|
|
const mock = new MockAdapter(axios);
|
|
|
|
afterEach(() => {
|
|
mock.reset();
|
|
});
|
|
|
|
describe("Test /api/wakatime", () => {
|
|
it("should test the request", async () => {
|
|
const username = "anuraghazra";
|
|
const req = { query: { username } };
|
|
const res = { setHeader: jest.fn(), send: jest.fn() };
|
|
mock
|
|
.onGet(
|
|
`https://wakatime.com/api/v1/users/${username}/stats?is_including_today=true`,
|
|
)
|
|
.reply(200, wakaTimeData);
|
|
|
|
await wakatime(req, res);
|
|
|
|
expect(res.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml");
|
|
expect(res.send).toHaveBeenCalledWith(
|
|
renderWakatimeCard(wakaTimeData.data, {}),
|
|
);
|
|
});
|
|
|
|
it("should have proper cache", async () => {
|
|
const username = "anuraghazra";
|
|
const req = { query: { username } };
|
|
const res = { setHeader: jest.fn(), send: jest.fn() };
|
|
mock
|
|
.onGet(
|
|
`https://wakatime.com/api/v1/users/${username}/stats?is_including_today=true`,
|
|
)
|
|
.reply(200, wakaTimeData);
|
|
|
|
await wakatime(req, res);
|
|
|
|
expect(res.setHeader).toHaveBeenCalledWith("Content-Type", "image/svg+xml");
|
|
expect(res.setHeader).toHaveBeenCalledWith(
|
|
"Cache-Control",
|
|
`max-age=${CACHE_TTL.WAKATIME_CARD.DEFAULT}, ` +
|
|
`s-maxage=${CACHE_TTL.WAKATIME_CARD.DEFAULT}, ` +
|
|
`stale-while-revalidate=${DURATIONS.ONE_DAY}`,
|
|
);
|
|
});
|
|
});
|