Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kentcdodds/canva

src/operations.test.ts

34 lines · 1.1 KB · TypeScript
import assert from 'node:assert/strict'
import test from 'node:test'
import {
	canvaOperationNames,
	canvaOperations,
	isCanvaOperation,
	isMutation,
} from './operations.ts'

test('catalog covers every selected Canva OpenAPI operation', () => {
	assert.equal(canvaOperationNames.length, 48)
	assert.equal(new Set(canvaOperationNames).size, 48)
})

test('every operation has a valid API path and method', () => {
	for (const operation of canvaOperationNames) {
		const definition = canvaOperations[operation]
		assert.match(definition.path, /^\/v1\//)
		assert.ok(['GET', 'POST', 'PATCH', 'DELETE'].includes(definition.method))
		assert.equal(isMutation(operation), definition.method !== 'GET')
		assert.equal(isCanvaOperation(operation), true)
	}
})

test('unknown operation names are rejected', () => {
	assert.equal(isCanvaOperation('remove-all-designs'), false)
	assert.equal(isCanvaOperation(null), false)
})

test('deprecated and preview endpoints are identified', () => {
	assert.equal(canvaOperations.createcomment.deprecated, true)
	assert.equal(canvaOperations.createthread.preview, true)
	assert.equal('deprecated' in canvaOperations.createdesign, false)
})