Files
metrics/tests/mocks/api/axios/get/wakatime.mjs
2022-01-14 00:13:38 -05:00

55 lines
2.4 KiB
JavaScript

/**Mocked data */
export default function({faker, url, options, login = faker.internet.userName()}) {
//Wakatime api
if (/^https:..wakatime.com.api.v1.users..*.stats.*$/.test(url)) {
//Get user profile
if (/api_key=MOCKED_TOKEN/.test(url)) {
console.debug(`metrics/compute/mocks > mocking wakatime api result > ${url}`)
const stats = array => {
const elements = []
let results = new Array(4 + faker.datatype.number(2)).fill(null).map(_ => ({
get digital() {
return `${this.hours}:${this.minutes}`
},
hours:faker.datatype.number(1000),
minutes:faker.datatype.number(1000),
name:array ? faker.random.arrayElement(array) : faker.random.words(2).replace(/ /g, "-").toLocaleLowerCase(),
percent:0,
total_seconds:faker.datatype.number(1000000),
}))
results = results.filter(({name}) => elements.includes(name) ? false : (elements.push(name), true))
let percents = 100
for (const result of results) {
result.percent = 1 + faker.datatype.number(percents - 1)
percents -= result.percent
}
return results
}
return ({
status:200,
data:{
data:{
best_day:{
created_at:faker.date.recent(),
date:`${faker.date.recent()}`.substring(0, 10),
total_seconds:faker.datatype.number(1000000),
},
categories:stats(),
daily_average:faker.datatype.number(12 * 60 * 60),
daily_average_including_other_language:faker.datatype.number(12 * 60 * 60),
dependencies:stats(),
editors:stats(["VS Code", "Chrome", "IntelliJ", "PhpStorm", "WebStorm", "Android Studio", "Visual Studio", "Sublime Text", "PyCharm", "Vim", "Atom", "Xcode"]),
languages:stats(["JavaScript", "TypeScript", "PHP", "Java", "Python", "Vue.js", "HTML", "C#", "JSON", "Dart", "SCSS", "Kotlin", "JSX", "Go", "Ruby", "YAML"]),
machines:stats(),
operating_systems:stats(["Mac", "Windows", "Linux"]),
project:null,
projects:/api_key=MOCKED_TOKEN_NO_PROJECTS/.test(url) ? null : stats(),
total_seconds:faker.datatype.number(1000000000),
total_seconds_including_other_language:faker.datatype.number(1000000000),
},
},
})
}
}
}