import { describe, expect, test } from 'vitest'
import {
htmlToMetaTags,
parseButtons,
parseProperties,
validateButtons,
} from './utils.js'
const html = `
`
const selector = 'meta[property^="fc:"], meta[property^="og:"]'
const metaTags = htmlToMetaTags(html, selector)
test('htmlToMetaTags', () => {
const html = `
foo
bar
`
expect(htmlToMetaTags(html, selector).length).toEqual(2)
})
test('parseFrameProperties', () => {
const frameProperties = parseProperties(metaTags)
expect(frameProperties).toEqual({
image: 'https://example.com/og',
imageAspectRatio: '1.91:1',
imageUrl: 'http://example.com/image',
input: undefined,
postUrl: 'http://localhost:3001',
title: '',
version: 'vNext',
})
})
describe('parseFrameButtons', () => {
test('default', () => {
const buttons = parseButtons(metaTags)
expect(buttons).toEqual([
{
title: 'foo',
index: 1,
type: 'post',
},
{
title: 'bar',
index: 2,
target: 'https://example.com',
type: 'link',
},
{
title: 'baz',
index: 3,
target: 'https://example.com/redirect',
type: 'post_redirect',
},
{
title: 'mint',
index: 4,
target: 'eip155:7777777:0x060f3edd18c47f59bd23d063bbeb9aa4a8fec6df',
type: 'mint',
},
])
})
})
describe('validateFrameButtons', () => {
test('default', () => {
const buttons = parseButtons(metaTags)
const result = validateButtons(buttons)
expect(result).toEqual({
buttonsAreOutOfOrder: false,
invalidButtons: [],
})
})
test('missing buttons', () => {
const html = `
`
const metaTags = htmlToMetaTags(html, selector)
const buttons = parseButtons(metaTags)
const result = validateButtons(buttons)
expect(result).toEqual({
buttonsAreOutOfOrder: true,
invalidButtons: [],
})
})
test('missing buttons', () => {
const html = `
`
const metaTags = htmlToMetaTags(html, selector)
const buttons = parseButtons(metaTags)
const result = validateButtons(buttons)
expect(result).toEqual({
buttonsAreOutOfOrder: true,
invalidButtons: [],
})
})
})