/
githubmirror
/
github-readme-stats
Обзор
Документация
Войти
/
githubmirror
/
github-readme-stats
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/wakatime.test.js
146 строк
4 KB
dependabot[bot]
build(deps-dev): bump jest from 29.7.0 to 30.2.0 (#4524)
10 окт 2025, 19:20
Не верифицирован
10 окт 2025, 19:20
6d6b87c
Код
Авторство
О чём код?
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}`, ); }); });