mirror of https://github.com/iconify/api.git
372 lines
6.6 KiB
TypeScript
372 lines
6.6 KiB
TypeScript
import { splitKeyword } from '../../lib/data/search/split';
|
|
|
|
describe('Splitting keywords', () => {
|
|
test('Bad entries', () => {
|
|
expect(splitKeyword('')).toBeUndefined();
|
|
expect(splitKeyword('-')).toBeUndefined();
|
|
expect(splitKeyword('prefix:mdi')).toBeUndefined();
|
|
expect(splitKeyword('palette=true')).toBeUndefined();
|
|
expect(splitKeyword('bad,entry')).toBeUndefined();
|
|
|
|
// Too many prefix entries
|
|
expect(splitKeyword('mdi:home mdi-light:home')).toBeUndefined();
|
|
});
|
|
|
|
test('Prefixes', () => {
|
|
// 'mdi-home'
|
|
expect(splitKeyword('mdi-home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi', // leftover from internal function
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
{
|
|
keywords: ['mdi'],
|
|
partial: 'home',
|
|
test: ['mdi-home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('mdi-home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi', // leftover from internal function
|
|
keywords: ['home'],
|
|
},
|
|
{
|
|
keywords: ['mdi', 'home'],
|
|
test: ['mdi-home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'mdi:home'
|
|
expect(splitKeyword('mdi:home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('mdi:home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'prefix:mdi home'
|
|
expect(splitKeyword('prefix:mdi home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('prefix:mdi home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'prefix=mdi home'
|
|
expect(splitKeyword('prefix=mdi home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('prefix=mdi home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'prefixes:mdi home'
|
|
expect(splitKeyword('prefixes:mdi home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('prefixes:mdi home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'prefixes:fa6-,mdi- home'
|
|
expect(splitKeyword('prefixes:fa6-,mdi- home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['fa6-', 'mdi-'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('prefixes:fa6-,mdi- home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['fa6-', 'mdi-'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'prefixes=mdi* home'
|
|
expect(splitKeyword('prefixes=mdi* home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi', 'mdi-'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('prefixes=mdi* home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi', 'mdi-'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'mdi-light home'
|
|
expect(splitKeyword('mdi-light home')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi-light'],
|
|
prefix: 'mdi-light',
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi',
|
|
keywords: ['light'],
|
|
partial: 'home',
|
|
},
|
|
{
|
|
keywords: ['mdi', 'light'],
|
|
test: ['mdi-light'],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('mdi-light home', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi-light'],
|
|
prefix: 'mdi-light',
|
|
keywords: ['home'],
|
|
},
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi',
|
|
keywords: ['light', 'home'],
|
|
},
|
|
{
|
|
keywords: ['mdi', 'light', 'home'],
|
|
test: ['mdi-light'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
// 'mdi-light home-outline'
|
|
expect(splitKeyword('mdi-light home-outline')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi-light'],
|
|
prefix: 'mdi-light',
|
|
keywords: ['home'],
|
|
partial: 'outline',
|
|
test: ['home-outline'],
|
|
},
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi',
|
|
keywords: ['light', 'home'],
|
|
partial: 'outline',
|
|
test: ['home-outline'],
|
|
},
|
|
{
|
|
keywords: ['mdi', 'light', 'home'],
|
|
partial: 'outline',
|
|
test: ['mdi-light', 'home-outline'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
expect(splitKeyword('mdi-light home-outline', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi-light'],
|
|
prefix: 'mdi-light',
|
|
keywords: ['home', 'outline'],
|
|
test: ['home-outline'],
|
|
},
|
|
{
|
|
prefixes: ['mdi'],
|
|
prefix: 'mdi',
|
|
keywords: ['light', 'home', 'outline'],
|
|
test: ['home-outline'],
|
|
},
|
|
{
|
|
keywords: ['mdi', 'light', 'home', 'outline'],
|
|
test: ['mdi-light', 'home-outline'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
});
|
|
|
|
test('Keywords', () => {
|
|
expect(splitKeyword('home palette:true')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
palette: true,
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home palette=0')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
palette: false,
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home prefixes=mdi*,fa6-')).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi', 'mdi-', 'fa6-'],
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
|
|
expect(splitKeyword('home prefix=mdi palette=1', false)).toEqual({
|
|
searches: [
|
|
{
|
|
prefixes: ['mdi'],
|
|
keywords: ['home'],
|
|
},
|
|
],
|
|
params: {
|
|
palette: true,
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home style:fill')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
style: 'fill',
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home style=stroke')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
style: 'stroke',
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home fill=true')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
style: 'fill',
|
|
},
|
|
});
|
|
|
|
expect(splitKeyword('home stroke=true')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: [],
|
|
partial: 'home',
|
|
},
|
|
],
|
|
params: {
|
|
style: 'stroke',
|
|
},
|
|
});
|
|
|
|
// Too short for partial
|
|
expect(splitKeyword('a')).toEqual({
|
|
searches: [
|
|
{
|
|
keywords: ['a'],
|
|
},
|
|
],
|
|
params: {},
|
|
});
|
|
});
|
|
});
|