aboutsummaryrefslogtreecommitdiffstats
path: root/src/services/graphql/helpers/convert-post-to-article.test.ts
blob: 9fd74afc7696c54f2cdc3194e3eb3e7046b2cfc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import { describe, expect, it } from '@jest/globals';
import type { WPPost } from '../../../types';
import { ROUTES } from '../../../utils/constants';
import { convertPostToArticle } from './convert-post-to-article';
import { convertWPImgToImg } from './convert-wp-image-to-img';

describe('convert-post-to-article', () => {
  /* eslint-disable max-statements */
  it('converts a WPPost object to an Article object', () => {
    const post: WPPost = {
      acfPosts: null,
      author: { node: { name: 'Vince5' } },
      commentCount: 10,
      contentParts: {
        afterMore:
          'Eum est rerum neque placeat iure veniam enim consequatur assumenda. Quos eos placeat ea et vel sit ratione fugit. Modi qui sint iure beatae illo voluptas.',
        beforeMore:
          'Omnis ab qui dolorem praesentium voluptas asperiores officiis. Id nostrum minus quae ducimus tenetur eum a rem eum. Aut odio libero sit soluta ullam odit.',
      },
      databaseId: 8,
      date: '2022-05-04',
      featuredImage: null,
      info: { wordsCount: 300 },
      modified: '2022-06-01',
      seo: {
        metaDesc: 'Est non debitis quas harum quasi voluptatem qui.',
        title: 'consequuntur molestiae amet',
      },
      slug: '/the-post-slug',
      title: 'ea vero repellat',
    };
    const result = convertPostToArticle(post);

    expect(result.content).toBe(post.contentParts.afterMore);
    expect(result.id).toBe(post.databaseId);
    expect(result.intro).toBe(post.contentParts.beforeMore);
    expect(result.meta.author).toBe(post.author.node.name);
    expect(result.meta.commentsCount).toBe(post.commentCount);
    expect(result.meta.cover).toBeUndefined();
    expect(result.meta.dates.publication).toBe(post.date);
    expect(result.meta.dates.update).toBe(post.modified);
    expect(result.meta.seo.description).toBe(post.seo.metaDesc);
    expect(result.meta.seo.title).toBe(post.seo.title);
    expect(result.meta.thematics).toBeUndefined();
    expect(result.meta.topics).toBeUndefined();
    expect(result.meta.wordsCount).toBe(post.info.wordsCount);
    expect(result.slug).toBe(`${ROUTES.ARTICLE}/${post.slug}`);
    expect(result.title).toBe(post.title);
  });
  /* eslint-enable max-statements */

  it('can convert the cover', () => {
    const post = {
      acfPosts: null,
      author: { node: { name: 'Vince5' } },
      commentCount: null,
      contentParts: {
        afterMore:
          'Eum est rerum neque placeat iure veniam enim consequatur assumenda. Quos eos placeat ea et vel sit ratione fugit. Modi qui sint iure beatae illo voluptas.',
        beforeMore:
          'Omnis ab qui dolorem praesentium voluptas asperiores officiis. Id nostrum minus quae ducimus tenetur eum a rem eum. Aut odio libero sit soluta ullam odit.',
      },
      databaseId: 8,
      date: '2022-05-04',
      featuredImage: {
        node: {
          altText: 'molestiae praesentium animi',
          mediaDetails: {
            height: 480,
            width: 640,
          },
          sourceUrl: 'https://picsum.photos/640/480',
          title: 'ullam deserunt perspiciatis',
        },
      },
      info: { wordsCount: 300 },
      modified: '2022-06-01',
      seo: {
        metaDesc: 'Est non debitis quas harum quasi voluptatem qui.',
        title: 'consequuntur molestiae amet',
      },
      slug: '/the-post-slug',
      title: 'ea vero repellat',
    } satisfies WPPost;
    const result = convertPostToArticle(post);

    expect(result.meta.cover).toStrictEqual(
      convertWPImgToImg(post.featuredImage.node)
    );
  });

  it('can return 0 as comment count when not defined', () => {
    const post: WPPost = {
      acfPosts: null,
      author: { node: { name: 'Vince5' } },
      commentCount: null,
      contentParts: {
        afterMore:
          'Eum est rerum neque placeat iure veniam enim consequatur assumenda. Quos eos placeat ea et vel sit ratione fugit. Modi qui sint iure beatae illo voluptas.',
        beforeMore:
          'Omnis ab qui dolorem praesentium voluptas asperiores officiis. Id nostrum minus quae ducimus tenetur eum a rem eum. Aut odio libero sit soluta ullam odit.',
      },
      databaseId: 8,
      date: '2022-05-04',
      featuredImage: null,
      info: { wordsCount: 300 },
      modified: '2022-06-01',
      seo: {
        metaDesc: 'Est non debitis quas harum quasi voluptatem qui.',
        title: 'consequuntur molestiae amet',
      },
      slug: '/the-post-slug',
      title: 'ea vero repellat',
    };
    const result = convertPostToArticle(post);

    expect(result.meta.commentsCount).toBe(0);
  });
});