Files
aiturk-hermes-ide/apps/desktop/src/lib/plugin-source-urls.test.ts
T

34 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { resolvePluginSourceLinks } from './plugin-source-urls'
describe('resolvePluginSourceLinks', () => {
it('maps owner/repo to github browse and clone urls', () => {
expect(resolvePluginSourceLinks('NousResearch/hermes-example-plugins')).toEqual({
gitUrl: 'https://github.com/NousResearch/hermes-example-plugins.git',
browseUrl: 'https://github.com/NousResearch/hermes-example-plugins',
subdir: null
})
})
it('includes monorepo subdir in browse url', () => {
expect(resolvePluginSourceLinks('owner/repo/plugins/foo')).toEqual({
gitUrl: 'https://github.com/owner/repo.git',
browseUrl: 'https://github.com/owner/repo/tree/HEAD/plugins/foo',
subdir: 'plugins/foo'
})
})
it('supports git@ github urls', () => {
expect(resolvePluginSourceLinks('git@github.com:owner/my-plugin.git')).toEqual({
gitUrl: 'git@github.com:owner/my-plugin.git',
browseUrl: 'https://github.com/owner/my-plugin',
subdir: null
})
})
it('returns null for invalid identifiers', () => {
expect(resolvePluginSourceLinks('not-a-repo')).toBeNull()
})
})