Ghost/ghost/recommendations/test/WellknownService.test.ts

79 lines
2.4 KiB
TypeScript
Raw Normal View History

import assert from 'assert/strict';
import fs from 'fs/promises';
import path from 'path';
import {Recommendation} from '../src/Recommendation';
import {WellknownService} from '../src/WellknownService';
const dir = path.join(__dirname, 'data');
async function getContent() {
const content = await fs.readFile(path.join(dir, '.well-known', 'recommendations.json'), 'utf8');
return JSON.parse(content);
}
describe('WellknownService', function () {
const service = new WellknownService({
urlUtils: {
relativeToAbsolute(url: string) {
return 'https://example.com' + url;
}
},
dir
});
afterEach(async function () {
// Remove folder
await fs.rm(dir, {recursive: true, force: true});
});
it('Can save recommendations', async function () {
const recommendations = [
Recommendation.create({
title: 'My Blog',
reason: null,
excerpt: null,
featuredImage: null,
favicon: null,
url: 'https://example.com/blog',
oneClickSubscribe: false,
createdAt: new Date('2021-01-01T00:00:00Z'),
updatedAt: new Date('2021-02-01T00:00:00Z')
}),
Recommendation.create({
title: 'My Other Blog',
reason: null,
excerpt: null,
featuredImage: null,
favicon: null,
url: 'https://example.com/blog2',
oneClickSubscribe: false,
createdAt: new Date('2021-01-01T00:00:00Z'),
updatedAt: null
})
];
await service.set(recommendations);
// Check that the file exists
assert.deepEqual(await getContent(), [
{
url: 'https://example.com/blog',
created_at: '2021-01-01T00:00:00.000Z',
updated_at: '2021-02-01T00:00:00.000Z'
},
{
url: 'https://example.com/blog2',
created_at: '2021-01-01T00:00:00.000Z',
updated_at: '2021-01-01T00:00:00.000Z'
}
]);
});
it('Can get URL', async function () {
assert.equal(
(await service.getURL()).toString(),
'https://example.com/.well-known/recommendations.json'
);
});
});