206 lines
8.6 KiB
TypeScript
206 lines
8.6 KiB
TypeScript
/* 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: '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' },
|
|
)
|
|
})
|
|
})
|
|
})
|