mtcute/packages/core/tests/links/bots-links.spec.ts

210 lines
8.7 KiB
TypeScript
Raw Normal View History

2023-10-22 23:42:10 +03:00
/* eslint-disable @typescript-eslint/no-unsafe-call */
import { expect } from 'chai'
import { describe, it } from 'mocha'
import { links } from '../../src/utils/links/index.js'
describe('Deep links', function () {
describe('Bot start links', () => {
it('should generate t.me/username?start=parameter links', () => {
expect(links.botStart({ username: 'username', parameter: 'parameter' })).eq(
'https://t.me/username?start=parameter',
)
})
it('should generate tg://resolve?domain=username&start=parameter links', () => {
expect(links.botStart({ username: 'username', parameter: 'parameter', protocol: 'tg' })).eq(
'tg://resolve?domain=username&start=parameter',
)
})
it('should parse t.me/username?start=parameter links', () => {
expect(links.botStart.parse('https://t.me/username?start=parameter')).eql({
username: 'username',
parameter: 'parameter',
})
})
it('should parse tg://resolve?domain=username&start=parameter links', () => {
expect(links.botStart.parse('tg://resolve?domain=username&start=parameter')).eql({
username: 'username',
parameter: 'parameter',
})
})
})
describe('Bot add to group links', () => {
it('should generate t.me links', () => {
expect(links.botAddToGroup({ bot: 'bot_username' })).eq('https://t.me/bot_username?startgroup')
expect(links.botAddToGroup({ bot: 'bot_username', parameter: '' })).eq(
'https://t.me/bot_username?startgroup=',
)
2023-10-22 23:42:10 +03:00
expect(links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter' })).eq(
'https://t.me/bot_username?startgroup=parameter',
)
expect(links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'] })).eq(
'https://t.me/bot_username?startgroup&admin=post_stories',
)
})
it('should generate tg://resolve links', () => {
expect(links.botAddToGroup({ bot: 'bot_username', protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&startgroup',
)
expect(links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter', protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&startgroup=parameter',
)
expect(links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&startgroup&admin=post_stories',
)
})
it('should parse t.me links', () => {
expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup')).eql({
bot: 'bot_username',
parameter: undefined,
admin: undefined,
})
expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup=parameter')).eql({
bot: 'bot_username',
parameter: 'parameter',
admin: undefined,
})
expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup&admin=post_stories')).eql({
bot: 'bot_username',
parameter: undefined,
admin: ['postStories'],
})
})
it('should parse tg://resolve links', () => {
expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup')).eql({
bot: 'bot_username',
parameter: undefined,
admin: undefined,
})
expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup=parameter')).eql({
bot: 'bot_username',
parameter: 'parameter',
admin: undefined,
})
expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup&admin=post_stories')).eql({
bot: 'bot_username',
parameter: undefined,
admin: ['postStories'],
})
})
})
describe('Bot add to channel links', () => {
it('should generate t.me links', () => {
expect(links.botAddToChannel({ bot: 'bot_username' })).eq('https://t.me/bot_username?startchannel')
expect(links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'] })).eq(
'https://t.me/bot_username?startchannel&admin=post_stories',
)
})
it('should generate tg://resolve links', () => {
expect(links.botAddToChannel({ bot: 'bot_username', protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&startchannel',
)
expect(links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&startchannel&admin=post_stories',
)
})
it('should parse t.me links', () => {
expect(links.botAddToChannel.parse('https://t.me/bot_username?startchannel')).eql({
bot: 'bot_username',
admin: undefined,
})
expect(links.botAddToChannel.parse('https://t.me/bot_username?startchannel&admin=post_stories')).eql({
bot: 'bot_username',
admin: ['postStories'],
})
})
it('should parse tg://resolve links', () => {
expect(links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel')).eql({
bot: 'bot_username',
admin: undefined,
})
expect(links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel&admin=post_stories')).eql(
{ bot: 'bot_username', admin: ['postStories'] },
)
})
})
describe('Game links', () => {
it('should generate t.me links', () => {
expect(links.botGame({ bot: 'bot_username', game: 'short_name' })).eq(
'https://t.me/bot_username?game=short_name',
)
})
it('should generate tg://resolve links', () => {
expect(links.botGame({ bot: 'bot_username', game: 'short_name', protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&game=short_name',
)
})
it('should parse t.me links', () => {
expect(links.botGame.parse('https://t.me/bot_username?game=short_name')).eql({
bot: 'bot_username',
game: 'short_name',
})
})
it('should parse tg://resolve links', () => {
expect(links.botGame.parse('tg://resolve?domain=bot_username&game=short_name')).eql({
bot: 'bot_username',
game: 'short_name',
})
})
})
describe('Named web apps', () => {
it('should generate t.me links', () => {
expect(links.botWebApp({ bot: 'bot_username', app: 'short_name' })).eq(
'https://t.me/bot_username/short_name',
)
expect(links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter' })).eq(
'https://t.me/bot_username/short_name?startapp=parameter',
)
})
it('should generate tg://resolve links', () => {
expect(links.botWebApp({ bot: 'bot_username', app: 'short_name', protocol: 'tg' })).eq(
'tg://resolve?domain=bot_username&appname=short_name',
)
expect(
links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter', protocol: 'tg' }),
).eq('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter')
})
it('should parse t.me links', () => {
expect(links.botWebApp.parse('https://t.me/bot_username/short_name')).eql({
bot: 'bot_username',
app: 'short_name',
parameter: undefined,
})
expect(links.botWebApp.parse('https://t.me/bot_username/short_name?startapp=parameter')).eql({
bot: 'bot_username',
app: 'short_name',
parameter: 'parameter',
})
})
it('should parse tg://resolve links', () => {
expect(links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name')).eql({
bot: 'bot_username',
app: 'short_name',
parameter: undefined,
})
expect(links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter')).eql(
{ bot: 'bot_username', app: 'short_name', parameter: 'parameter' },
)
})
})
})