mirror of
https://github.com/orangecoding/fredy.git
synced 2026-06-16 12:31:07 +00:00
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
import { expect } from 'chai';
|
|
import * as similarityCache from '../../lib/services/similarity-check/similarityCache.js';
|
|
import { mockFredy } from '../utils.js';
|
|
|
|
describe('FredyRuntime', () => {
|
|
afterEach(() => {
|
|
similarityCache.invalidateAllForTest();
|
|
});
|
|
|
|
after(() => {
|
|
similarityCache.stopCacheCleanup();
|
|
});
|
|
|
|
describe('_filterBySimilarListings', () => {
|
|
let fredyRuntime;
|
|
|
|
beforeEach(async () => {
|
|
const FredyRuntime = await mockFredy();
|
|
fredyRuntime = new FredyRuntime({}, null, 'dummy-provider', 'dummy-job', similarityCache);
|
|
});
|
|
|
|
it('should filter out listings with similar title and address already in cache', () => {
|
|
similarityCache.addCacheEntry('Penthouse', 'Mustermann Straße 1');
|
|
|
|
const listings = [
|
|
{ id: '1', title: 'Penthouse', address: 'Mustermann Straße 1' },
|
|
{ id: '2', title: 'Nice apartment', address: 'Mustermann Straße 15' },
|
|
];
|
|
|
|
const result = fredyRuntime._filterBySimilarListings(listings);
|
|
|
|
expect(result).to.have.length(1);
|
|
expect(result[0].id).to.equal('2');
|
|
expect(result[0].title).to.equal('Nice apartment');
|
|
|
|
expect(similarityCache.hasSimilarEntries('Nice apartment', 'Mustermann Straße 15')).to.be.true;
|
|
});
|
|
|
|
it('should handle listings with null or undefined address', () => {
|
|
const listings = [
|
|
{ id: '1', title: 'Penthouse', address: null },
|
|
{ id: '2', title: 'Nice apartment', address: undefined },
|
|
];
|
|
|
|
const result = fredyRuntime._filterBySimilarListings(listings);
|
|
|
|
expect(result).to.have.length(2);
|
|
|
|
expect(similarityCache.hasSimilarEntries('Penthouse', null)).to.be.true;
|
|
expect(similarityCache.hasSimilarEntries('Nice apartment', undefined)).to.be.true;
|
|
});
|
|
});
|
|
});
|