Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: delete api token handler test #1499

Merged
merged 2 commits into from
Sep 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ describe('CreateRecordCommandHandler', () => {
handler = new CreateRecordCommandHandler(tableRepo, recordRepo, cls, rls)
})
test('create record success', async () => {
cls.get.calledWith('user.userId').mockResolvedValue('usr123')
cls.get.calledWith('user.userId').mockReturnValue('usr123')
tableRepo.findOneById.calledWith(table.id.value).mockResolvedValue(Some(table))
spy.mockReturnValue(record)

Expand All @@ -57,7 +57,7 @@ describe('CreateRecordCommandHandler', () => {
expect(id).toEqual(record.id.value)
})
test('findOneById failed', async () => {
cls.get.calledWith('user.userId').mockResolvedValue('usr123')
cls.get.calledWith('user.userId').mockReturnValue('usr123')
tableRepo.findOneById.mockResolvedValue(None)
spy.mockReturnValue(record)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { IClsService, ClsStore, User, UserId } from '@undb/core'
import { ApiToken, IApiTokenRepository } from '@undb/openapi'
import { MockProxy, mock } from 'vitest-mock-extended'
import { DeleteApiTokenCommand } from './delete-api-token.command'
import { DeleteApiTokenCommandHandler } from './delete-api-token.command.handler'
import { None, Some } from 'oxide.ts'

describe('APITokenStrategy', () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
describe('APITokenStrategy', () => {
describe('test DeleteApiTokenCommandHandler', () => {

let repo: MockProxy<IApiTokenRepository>
let cls: MockProxy<IClsService<ClsStore>>
let command: DeleteApiTokenCommand
let handler: DeleteApiTokenCommandHandler
let apiToken: ApiToken
let userId: UserId

beforeEach(() => {
repo = mock<IApiTokenRepository>()
cls = mock<IClsService<ClsStore>>()
apiToken = new ApiToken()
command = new DeleteApiTokenCommand({ apiTokenId: 'apiTokenIdString' })
handler = new DeleteApiTokenCommandHandler(repo, cls)
userId = new UserId('user123')
})
test('Delete api token success', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user123')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cls 和 repo 所有的 mock 都应该放在 beforeEach 里面

apiToken.userId = userId
Copy link
Collaborator

@nichenqin nichenqin Sep 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

常量的声明不用放这里,也不要放beforeEach,你可以直接在最外层的作用域 const

repo.findOneById.mockResolvedValue(Some(apiToken))
await handler.execute(command)
expect(repo.findOneById).toHaveBeenCalledWith(command.apiTokenId)
expect(repo.deleteOneById).toHaveBeenCalledWith(command.apiTokenId)
})

test('Delete api token faild', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user123')
apiToken.userId = userId
repo.findOneById.mockResolvedValue(None)
await handler.execute(command)
expect(repo.deleteOneById).not.toHaveBeenCalled()
})

test('Delete api token error', async () => {
cls.get.calledWith('user.userId').mockReturnValue('user321')
apiToken.userId = userId
repo.findOneById.mockResolvedValue(Some(apiToken))
await expect(handler.execute(command)).rejects.toThrowErrorMatchingInlineSnapshot(
'"cannot delete api token belongs to other user"',
)
expect(repo.deleteOneById).not.toHaveBeenCalled()
})
})