The great refactor (#82)

This commit is contained in:
Simon Lecoq
2021-01-30 12:31:09 +01:00
committed by GitHub
parent f8c6d19a4e
commit 682e43e10b
158 changed files with 6738 additions and 5022 deletions

View File

@@ -0,0 +1,28 @@
/** Mocked data */
export default function({faker}, target, that, [{page, per_page, owner, repo}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.repos.listCommits`)
return ({
status:200,
url:`https://api.github.com/repos/${owner}/${repo}/commits?per_page=${per_page}&page=${page}`,
headers: {
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:page < 2 ? new Array(per_page).fill(null).map(() =>
({
sha:"MOCKED_SHA",
commit:{
author:{
name:owner,
date:`${faker.date.recent(14)}`
},
committer:{
name:owner,
date:`${faker.date.recent(14)}`
},
}
})
) : []
})
}

View File

@@ -0,0 +1,18 @@
/** Mocked data */
export default function({faker}, target, that, [{owner, repo}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.repos.listContributors`)
return ({
status:200,
url:`https://api.github.com/repos/${owner}/${repo}/contributors`,
headers: {
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:new Array(40+faker.random.number(60)).fill(null).map(() => ({
login:faker.internet.userName(),
avatar_url:null,
contributions:faker.random.number(1000),
}))
})
}

View File

@@ -0,0 +1,325 @@
/** Mocked data */
export default function ({faker}, target, that, [{username:login, page, per_page}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.activity.listEventsForAuthenticatedUser`)
return ({
status:200,
url:`https://api.github.com/users/${login}/events?per_page=${per_page}&page=${page}`,
headers:{
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:page < 1 ? [] : [
{
id:"10000000000",
type:"CommitCommentEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
comment:{
user:{
login,
},
path:faker.system.fileName(),
commit_id:"MOCKED_SHA",
body:faker.lorem.sentence(),
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000001",
type:"PullRequestReviewCommentEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:"created",
comment:{
user:{
login,
},
body:faker.lorem.paragraph(),
},
pull_request:{
title:faker.lorem.sentence(),
number:1,
user:{
login:faker.internet.userName(),
},
body:"",
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000002",
type:"IssuesEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:faker.random.arrayElement(["opened", "closed", "reopened"]),
issue:{
number:2,
title:faker.lorem.sentence(),
user:{
login,
},
body:faker.lorem.paragraph(),
performed_via_github_app:null
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000003",
type:"GollumEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
pages:[
{
page_name:faker.lorem.sentence(),
title:faker.lorem.sentence(),
summary:null,
action:"created",
sha:"MOCKED_SHA",
}
]
},
created_at:faker.date.recent(7),
},
{
id:"10000000004",
type:"IssueCommentEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:"created",
issue:{
number:3,
title:faker.lorem.sentence(),
user:{
login,
},
labels:[
{
name:"lorem ipsum",
color:"d876e3",
}
],
state:"open",
},
comment:{
body:faker.lorem.paragraph(),
performed_via_github_app:null
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000005",
type:"ForkEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
forkee:{
name:faker.random.word(),
full_name:`${faker.random.word()}/${faker.random.word()}`,
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000006",
type:"PullRequestReviewEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:"created",
review:{
user:{
login,
},
state:"approved",
},
pull_request:{
state:"open",
number:4,
locked:false,
title:faker.lorem.sentence(),
user:{
login:faker.internet.userName(),
},
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000007",
type:"ReleaseEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:"published",
release:{
tag_name:`v${faker.random.number()}.${faker.random.number()}`,
name:faker.random.words(4),
draft:faker.random.boolean(),
prerelease:faker.random.boolean(),
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000008",
type:"CreateEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
ref:faker.lorem.slug(),
ref_type:faker.random.arrayElement(["tag", "branch"]),
master_branch:"master",
},
created_at:faker.date.recent(7),
},
{
id:"100000000009",
type:"WatchEvent",
actor:{
login,
},
repo:{
name:"lowlighter/metrics",
},
payload:{action:"started"},
created_at:faker.date.recent(7),
},
{
id:"10000000010",
type:"DeleteEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
ref:faker.lorem.slug(),
ref_type:faker.random.arrayElement(["tag", "branch"]),
},
created_at:faker.date.recent(7),
},
{
id:"10000000011",
type:"PushEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
size:1,
ref:"refs/heads/master",
commits:[
{
sha:"MOCKED_SHA",
message:faker.lorem.sentence(),
}
]
},
created_at:faker.date.recent(7),
},
{
id:"10000000012",
type:"PullRequestEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
action:faker.random.arrayElement(["opened", "closed"]),
number:5,
pull_request:{
user:{
login,
},
state:"open",
title:faker.lorem.sentence(),
additions:faker.random.number(1000),
deletions:faker.random.number(1000),
changed_files:faker.random.number(10),
}
},
created_at:faker.date.recent(7),
},
{
id:"10000000013",
type:"MemberEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{
member:{
login:faker.internet.userName(),
},
action:"added"
},
created_at:faker.date.recent(7),
},
{
id:"10000000014",
type:"PublicEvent",
actor:{
login,
},
repo:{
name:`${faker.random.word()}/${faker.random.word()}`,
},
payload:{},
created_at:faker.date.recent(7),
}
]
})
}

View File

@@ -0,0 +1,23 @@
/** Mocked data */
export default function({faker}, target, that, args) {
return ({
status:200,
url:"https://api.github.com/rate_limit",
headers:{
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:{
resources:{
core:{limit:5000, used:0, remaining:5000, reset:0},
search:{limit:30, used:0, remaining:30, reset:0},
graphql:{limit:5000, used:0, remaining:5000, reset:0},
integration_manifest:{limit:5000, used:0, remaining:5000, reset:0},
source_import:{limit:100, used:0, remaining:100, reset:0},
code_scanning_upload:{limit:500, used:0, remaining:500, reset:0},
},
rate:{limit:5000, used:0, remaining:"MOCKED", reset:0}
}
})
}

View File

@@ -0,0 +1,59 @@
/** Mocked data */
export default function({faker}, target, that, args) {
//Arguments
const [url] = args
//Head request
if (/^HEAD .$/.test(url)) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.request HEAD`)
return ({
status:200,
url:"https://api.github.com/",
headers:{
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:undefined
})
}
//Commit content
if (/^https:..api.github.com.repos.lowlighter.metrics.commits.MOCKED_SHA/.test(url)) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.request ${url}`)
return ({
status:200,
url:"https://api.github.com/repos/lowlighter/metrics/commits/MOCKED_SHA",
data:{
sha:"MOCKED_SHA",
commit:{
author:{
name:faker.internet.userName(),
email:faker.internet.email(),
date:`${faker.date.recent(7)}`,
},
committer:{
name:faker.internet.userName(),
email:faker.internet.email(),
date:`${faker.date.recent(7)}`,
},
},
author:{
login:faker.internet.userName(),
id:faker.random.number(100000000),
},
committer:{
login:faker.internet.userName(),
id:faker.random.number(100000000),
},
files: [
{
sha:"MOCKED_SHA",
filename:faker.system.fileName(),
patch:"@@ -0,0 +1,5 @@\n+//Imports\n+ import app from \"./src/app.mjs\"\n+\n+//Start app\n+ await app()\n\\ No newline at end of file"
},
]
}
})
}
return target(...args)
}

View File

@@ -0,0 +1,27 @@
/** Mocked data */
export default function({faker}, target, that, [{owner, repo}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.repos.getContributorsStats`)
return ({
status:200,
url:`https://api.github.com/repos/${owner}/${repo}/stats/contributors`,
headers:{
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:[
{
total:faker.random.number(10000),
weeks:[
{w:1, a:faker.random.number(10000), d:faker.random.number(10000), c:faker.random.number(10000)},
{w:2, a:faker.random.number(10000), d:faker.random.number(10000), c:faker.random.number(10000)},
{w:3, a:faker.random.number(10000), d:faker.random.number(10000), c:faker.random.number(10000)},
{w:4, a:faker.random.number(10000), d:faker.random.number(10000), c:faker.random.number(10000)},
],
author: {
login:owner,
}
}
]
})
}

View File

@@ -0,0 +1,18 @@
/** Mocked data */
export default function({faker}, target, that, [{username}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.repos.getByUsername`)
return ({
status:200,
url:`'https://api.github.com/users/${username}/`,
headers: {
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:{
login:faker.internet.userName(),
avatar_url:null,
contributions:faker.random.number(1000),
}
})
}

View File

@@ -0,0 +1,23 @@
/** Mocked data */
export default function({faker}, target, that, [{owner, repo}]) {
console.debug(`metrics/compute/mocks > mocking rest api result > rest.repos.getViews`)
const count = faker.random.number(10000)*2
const uniques = faker.random.number(count)*2
return ({
status:200,
url:`https://api.github.com/repos/${owner}/${repo}/traffic/views`,
headers:{
server:"GitHub.com",
status:"200 OK",
"x-oauth-scopes":"repo",
},
data:{
count,
uniques,
views:[
{timestamp:`${faker.date.recent()}`, count:count/2, uniques:uniques/2},
{timestamp:`${faker.date.recent()}`, count:count/2, uniques:uniques/2},
]
}
})
}