diff options
-rw-r--r-- | lib/Post.ts | 9 | ||||
-rw-r--r-- | lib/interfaces.ts | 10 | ||||
-rw-r--r-- | test/generateApi.spec.ts | 2 | ||||
-rw-r--r-- | test/getPost.spec.ts | 3 |
4 files changed, 14 insertions, 10 deletions
diff --git a/lib/Post.ts b/lib/Post.ts index 27a6cb9..f99ef83 100644 --- a/lib/Post.ts +++ b/lib/Post.ts @@ -38,13 +38,16 @@ export default class Post { getMeta(): Meta { const { attributes } = this.post; const author: string = attributes.author; - delete attributes.author; + if (!author) throw 'Error while parsing the author'; const title: string = attributes.title; - delete attributes.title; + if (!title) throw 'Error while parsing the title'; + const additionalMeta = Object.keys(attributes) + .filter((key) => key != 'title' && key != 'author') + .reduce((acc, key) => ({ ...acc, [key]: attributes[key] }), {}); return { author, title, - additionalMeta: attributes, + additionalMeta, }; } diff --git a/lib/interfaces.ts b/lib/interfaces.ts index 974765f..158ac1d 100644 --- a/lib/interfaces.ts +++ b/lib/interfaces.ts @@ -4,19 +4,19 @@ export interface Date { day: string; } -/*export interface Meta { - [key: string]: object; -}*/ +export interface Object { + [key: string]: any; +} export interface Meta { title: string; author: string; - additionalMeta: object; + additionalMeta: object; } export interface FrontMatterObject { body: string; - attributes: Meta; + attributes: Object; } export interface PostApiListEntry { diff --git a/test/generateApi.spec.ts b/test/generateApi.spec.ts index c2a96e3..bf63b6e 100644 --- a/test/generateApi.spec.ts +++ b/test/generateApi.spec.ts @@ -8,6 +8,6 @@ test("generate single file", () => { k.generateApi(dir); fs.readFile("./tmp/api/posts/2019/12/12/test.json", "utf-8", (err, data) => { const parsedPost = JSON.parse(data); - expect(parsedPost.title).toBe("test"); + expect(parsedPost.title).toBe("Test"); }); }); diff --git a/test/getPost.spec.ts b/test/getPost.spec.ts index 72d7b5e..080bfbd 100644 --- a/test/getPost.spec.ts +++ b/test/getPost.spec.ts @@ -3,6 +3,7 @@ import Kronikarz from "../dist"; const k = new Kronikarz(__dirname + "/samples"); test("simple get", () => { - const post = k.getPost("2019", "12", "12", "test"); + const p = k.getPost("2019", "12", "12", "test"); + const post = p.toApi(); expect(post.title).toBe("Test"); }); |