Skip to main content
Glama

mcp-appstore

by appreply-co
forms.spec.ts4.18 kB
import { describe, it, expect, beforeEach } from 'vitest'; import { type CheerioAPI } from '../index.js'; import { cheerio, forms } from '../__fixtures__/fixtures.js'; describe('$(...)', () => { let $: CheerioAPI; beforeEach(() => { $ = cheerio.load(forms); }); describe('.serializeArray', () => { it('() : should get form controls', () => { expect($('form#simple').serializeArray()).toStrictEqual([ { name: 'fruit', value: 'Apple', }, ]); }); it('() : should get nested form controls', () => { expect($('form#nested').serializeArray()).toHaveLength(2); const data = $('form#nested').serializeArray(); data.sort((a, b) => (a.value > b.value ? 1 : -1)); expect(data).toStrictEqual([ { name: 'fruit', value: 'Apple', }, { name: 'vegetable', value: 'Carrot', }, ]); }); it('() : should not get disabled form controls', () => { expect($('form#disabled').serializeArray()).toStrictEqual([]); }); it('() : should not get form controls with the wrong type', () => { expect($('form#submit').serializeArray()).toStrictEqual([ { name: 'fruit', value: 'Apple', }, ]); }); it('() : should get selected options', () => { expect($('form#select').serializeArray()).toStrictEqual([ { name: 'fruit', value: 'Orange', }, ]); }); it('() : should not get unnamed form controls', () => { expect($('form#unnamed').serializeArray()).toStrictEqual([ { name: 'fruit', value: 'Apple', }, ]); }); it('() : should get multiple selected options', () => { expect($('form#multiple').serializeArray()).toHaveLength(2); const data = $('form#multiple').serializeArray(); data.sort((a, b) => (a.value > b.value ? 1 : -1)); expect(data).toStrictEqual([ { name: 'fruit', value: 'Apple', }, { name: 'fruit', value: 'Orange', }, ]); }); it('() : should get individually selected elements', () => { const data = $('form#nested input').serializeArray(); data.sort((a, b) => (a.value > b.value ? 1 : -1)); expect(data).toStrictEqual([ { name: 'fruit', value: 'Apple', }, { name: 'vegetable', value: 'Carrot', }, ]); }); it('() : should standardize line breaks', () => { expect($('form#textarea').serializeArray()).toStrictEqual([ { name: 'fruits', value: 'Apple\r\nOrange', }, ]); }); it("() : shouldn't serialize the empty string", () => { expect($('<input value=pineapple>').serializeArray()).toStrictEqual([]); expect( $('<input name="" value=pineapple>').serializeArray(), ).toStrictEqual([]); expect( $('<input name="fruit" value=pineapple>').serializeArray(), ).toStrictEqual([ { name: 'fruit', value: 'pineapple', }, ]); }); it('() : should serialize inputs without value attributes', () => { expect($('<input name="fruit">').serializeArray()).toStrictEqual([ { name: 'fruit', value: '', }, ]); }); }); describe('.serialize', () => { it('() : should get form controls', () => { expect($('form#simple').serialize()).toBe('fruit=Apple'); }); it('() : should get nested form controls', () => { expect($('form#nested').serialize()).toBe('fruit=Apple&vegetable=Carrot'); }); it('() : should not get disabled form controls', () => { expect($('form#disabled').serialize()).toBe(''); }); it('() : should get multiple selected options', () => { expect($('form#multiple').serialize()).toBe('fruit=Apple&fruit=Orange'); }); it("() : should encode spaces as +'s", () => { expect($('form#spaces').serialize()).toBe('fruit=Blood+orange'); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/appreply-co/mcp-appstore'

If you have feedback or need assistance with the MCP directory API, please join our Discord server