Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
2.1 KiB
Text
58 lines
2.1 KiB
Text
const fs = require('fs')
|
|
const path = require('path')
|
|
const {createAPIFromDataset} = require('./create-entity-finder-api.js')
|
|
|
|
describe('getEntity', () => {
|
|
let api
|
|
|
|
beforeEach(() => {
|
|
api = createAPIFromDataset([
|
|
{
|
|
name: 'Domain',
|
|
domains: ['*.example.com', '*.example.co.uk'],
|
|
},
|
|
{
|
|
name: 'Subdomain',
|
|
domains: ['*.sub.example.com', '*.sub.example.co.uk'],
|
|
},
|
|
{
|
|
name: 'Subsubdomain',
|
|
domains: ['very.specific.example.com'],
|
|
},
|
|
])
|
|
})
|
|
|
|
it('should find direct domains', () => {
|
|
expect(api.getEntity('https://very.specific.example.com/path').name).toEqual('Subsubdomain')
|
|
})
|
|
|
|
it('should find wildcard subdomains', () => {
|
|
expect(api.getEntity('https://foo.sub.example.com/path').name).toEqual('Subdomain')
|
|
expect(api.getEntity('https://bar.sub.example.com/path').name).toEqual('Subdomain')
|
|
expect(api.getEntity('https://baz.bar.sub.example.com/path').name).toEqual('Subdomain')
|
|
expect(api.getEntity('https://foo.sub.example.co.uk/path').name).toEqual('Subdomain')
|
|
expect(api.getEntity('https://bar.sub.example.co.uk/path').name).toEqual('Subdomain')
|
|
expect(api.getEntity('https://baz.bar.sub.example.co.uk/path').name).toEqual('Subdomain')
|
|
})
|
|
|
|
it('should find wildcard domains', () => {
|
|
expect(api.getEntity('https://foo.example.com/path').name).toEqual('Domain')
|
|
expect(api.getEntity('https://bar.example.com/path').name).toEqual('Domain')
|
|
expect(api.getEntity('https://baz.bar.example.com/path').name).toEqual('Domain')
|
|
expect(api.getEntity('https://foo.example.co.uk/path').name).toEqual('Domain')
|
|
expect(api.getEntity('https://bar.example.co.uk/path').name).toEqual('Domain')
|
|
expect(api.getEntity('https://baz.bar.example.co.uk/path').name).toEqual('Domain')
|
|
})
|
|
|
|
it.skip('stress test', () => {
|
|
const urls = fs
|
|
.readFileSync(path.join(__dirname, '../data/random-urls.txt'), 'utf8')
|
|
.split('\n')
|
|
.filter(Boolean)
|
|
console.time('getEntity')
|
|
for (let i = 0; i < 1_000_000; i++) {
|
|
api.getEntity(urls[i % urls.length])
|
|
}
|
|
console.timeEnd('getEntity')
|
|
})
|
|
})
|