Skip to content

Commit

Permalink
test(api): added testing for delete and patch
Browse files Browse the repository at this point in the history
  • Loading branch information
kilip committed Oct 24, 2023
1 parent 48f19b6 commit 575a955
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 22 deletions.
49 changes: 49 additions & 0 deletions src/pkg/github/api/delete.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import fetchMock from 'fetch-mock'
import { createMocks } from 'node-mocks-http'
import { afterEach, describe, expect, it, vi } from 'vitest'
import deleteRepo from './delete'

describe('DELETE /api/github/repo', () => {
afterEach(() => {
fetchMock.reset()
})

it('should create octokit DELETE repo request', async () => {
const { req } = createMocks()
req.json = vi.fn().mockResolvedValue({
full_name: 'kilip/testing',
})

fetchMock.delete(
{
url: 'path:/repos/kilip/testing',
},
204
)

const response = await deleteRepo(req)

expect(response.ok).toBeTruthy()
})

it('should handle octokit response error', async () => {
const { req } = createMocks()
req.json = vi.fn().mockResolvedValue({
full_name: 'kilip/testing',
})

fetchMock.delete(
{
url: 'path:/repos/kilip/testing',
},
() => {
throw new Error('test error')
}
)

const response = await deleteRepo(req)

expect(response.ok).toBeFalsy()
expect(response.status).toBe(500)
})
})
25 changes: 14 additions & 11 deletions src/pkg/github/api/delete.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
import { createOctokit } from '../octokit';
import { NextRequest, NextResponse } from 'next/server';
import { createOctokit } from '../octokit'
import { NextRequest, NextResponse } from 'next/server'

export default async function deleteRepo(req: NextRequest){
try{
export default async function deleteRepo(req: NextRequest) {
try {
const octokit = await createOctokit(req)
const params = await req.json()

const [owner,name] = params.full_name.split('/')
const [owner, name] = params.full_name.split('/')
const response = await octokit.repos.delete({
owner,
repo: name
})
return NextResponse.json(response, {status: response.status})
}catch(e: any){
return NextResponse.json({error: e}, {
status: e.status,
repo: name,
})
return NextResponse.json({ ...response }, { status: response.status })
} catch (e: any) {
return NextResponse.json(
{ error: e },
{
status: e.status,
}
)
}
}
64 changes: 64 additions & 0 deletions src/pkg/github/api/patch.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import fetchMock from 'fetch-mock'
import { createMocks } from 'node-mocks-http'
import { afterEach, describe, expect, it, vi } from 'vitest'
import { patch } from './patch'

describe('PATCH /api/github/repo', () => {
afterEach(() => {
fetchMock.reset()
})

it('should make octokit patch requests', async () => {
const expected = { name: 'testing' }
const payload = {
owner: 'kilip',
repo: 'testing',
archived: true,
}
const { req } = createMocks()
req.json = vi.fn().mockResolvedValue(payload)

fetchMock.patch(
{
url: 'path:/repos/kilip/testing',
body: { archived: true },
},
{
body: expected,
}
)

const response = await patch(req)

const json = await response.json()

expect(json.data).toEqual(expected)
})

it('should handle octokit error response', async () => {
const payload = {
owner: 'kilip',
repo: 'testing',
archived: true,
}
const { req } = createMocks()
req.json = vi.fn().mockResolvedValue(payload)

fetchMock.patch(
{
url: 'path:/repos/kilip/testing',
body: { archived: true },
},
() => {
throw new Error('test error')
}
)

const response = await patch(req)
const json = await response.json()

expect(response.ok).toBeFalsy()
expect(response.status).toBe(500)
expect(json.error.name).toEqual('HttpError')
})
})
23 changes: 13 additions & 10 deletions src/pkg/github/api/patch.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import { createOctokit } from '../octokit';
import { NextRequest, NextResponse } from 'next/server';
import { GitHubPatchRepoParams } from '../types';
import { createOctokit } from '../octokit'
import { NextRequest, NextResponse } from 'next/server'
import { GitHubPatchRepoParams } from '../types'

export async function patch(req: NextRequest){
try{
export async function patch(req: NextRequest) {
try {
const octokit = await createOctokit(req)
const params: GitHubPatchRepoParams = await req.json()
const response = await octokit.repos.update(params)
return NextResponse.json(response, {status: response.status})
}catch(e: any){
return NextResponse.json({error: e}, {
status: e.status,
})
return NextResponse.json(response, { status: response.status })
} catch (e: any) {
return NextResponse.json(
{ error: e },
{
status: e.status,
}
)
}
}
2 changes: 1 addition & 1 deletion src/pkg/github/api/search.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { GitHubSearchParams } from '../types'
import { NextRequest, NextResponse } from 'next/server'
import fetchMock from 'fetch-mock'

describe('search()', () => {
describe('GET /api/github/repo', () => {
beforeEach(async () => {
const session = {
profile: {
Expand Down

0 comments on commit 575a955

Please sign in to comment.