UNPKG

@ossjs/release

Version:

Minimalistic, opinionated, and predictable release automation tool.

77 lines (69 loc) 2.05 kB
import { http, HttpResponse } from 'msw' import { DeferredPromise } from '@open-draft/deferred-promise' import { testEnvironment } from '#/test/env.js' import { mockRepo } from '#/test/fixtures.js' import type { GitHubRelease } from '#/src/utils/github/get-github-release.js' import { createGitHubRelease } from '#/src/utils/github/create-github-release.js' const { setup, reset, cleanup, api } = testEnvironment({ fileSystemPath: 'create-github-release', }) beforeAll(async () => { await setup() }) afterEach(async () => { await reset() }) afterAll(async () => { await cleanup() }) it('marks the release as non-latest if there is a higher version released on GitHub', async () => { const repo = mockRepo() const requestBodyPromise = new DeferredPromise() api.use( http.get<never, never, GitHubRelease>( `https://api.github.com/repos/:owner/:name/releases/latest`, () => { return HttpResponse.json({ // Set the latest GitHub release as v2.0.0. tag_name: 'v2.0.0', html_url: '/v2.0.0', }) }, ), http.post<never, never, GitHubRelease>( `https://api.github.com/repos/:owner/:name/releases`, async ({ request }) => { requestBodyPromise.resolve(request.json()) return HttpResponse.json( { tag_name: 'v1.1.1', html_url: '/v1.1.1', }, { status: 201 }, ) }, ), ) // Try to release a backport version for v1.0.0. const notes = '# Release notes' const githubRelease = await createGitHubRelease( { repo, nextRelease: { version: '1.1.1', tag: 'v1.1.1', publishedAt: new Date(), }, }, notes, ) expect(githubRelease).toHaveProperty('html_url', '/v1.1.1') const requestBody = await requestBodyPromise expect(requestBody).toEqual({ tag_name: 'v1.1.1', name: 'v1.1.1', body: notes, // Must set "false" as the value of the "make_latest" property. make_latest: 'false', }) })