jam-my-stack/test/masto-feed-parser.test.js

58 lines
1.6 KiB
JavaScript
Raw Normal View History

const fs = require('fs');
const fsp = require('fs').promises;
const { rmdir } = require('./utils')
const frontMatterParser = require('parser-front-matter');
jest.mock('got');
const { parseMastoFeed } = require('../src/masto-feed-parser')
2021-03-05 11:38:51 +01:00
const dumpdir = `${__dirname}/dump`
describe("mastodon feed parser tests", () => {
beforeEach(() => {
2021-03-05 11:38:51 +01:00
if(fs.existsSync(dumpdir)) {
rmdir(dumpdir)
}
2021-03-05 11:38:51 +01:00
fs.mkdirSync(dumpdir)
});
test("parse creates separate notes in each month subdir", async () => {
await parseMastoFeed({
url: "invalid",
2021-03-05 11:38:51 +01:00
notesdir: dumpdir
})
2021-03-05 11:38:51 +01:00
let dir = await fsp.readdir(`${dumpdir}/2021/02`, { withFileTypes: true })
expect(dir.length).toBe(8)
2021-03-05 11:38:51 +01:00
dir = await fsp.readdir(`${dumpdir}/2021/03`, { withFileTypes: true })
expect(dir.length).toBe(4)
})
test("parse creates correct MD structure", async () => {
await parseMastoFeed({
url: "invalid",
notesdir: dumpdir,
utcOffset: 0
})
const actualMd = (await fsp.readFile(`${dumpdir}/2021/03/01h19m03s35.md`)).toString()
2021-03-05 15:00:34 +01:00
expect(actualMd).toMatchSnapshot()
})
test("parse creates MD with context if in-reply-to", async () => {
//https://aus.social/users/aussocialadmin/statuses/105817435308293091
await parseMastoFeed({
url: "invalid",
notesdir: dumpdir,
utcOffset: 0
})
const actualMd = await fsp.readFile(`${dumpdir}/2021/03/02h16m18s46.md`)
const expectedReplyTo = "https://social.linux.pizza/users/StampedingLonghorn/statuses/105821099684887793"
const md = frontMatterParser.parseSync(actualMd.toString())
expect(md.data.context).toBe(expectedReplyTo)
})
})