aboutsummaryrefslogtreecommitdiffstats
path: root/src/services/graphql/helpers/convert-post-preview-to-article-preview.test.ts
blob: c13684f76c6e7fc919977d733b66d4729de91644 (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
120
121
122
123
124
125
126
127
128
129
130
import { describe, expect, it } from '@jest/globals';
import type { WPPostPreview, WPThematicPreview } from '../../../types';
import { convertPostPreviewToArticlePreview } from './convert-post-preview-to-article-preview';
import { convertTaxonomyToPageLink } from './convert-taxonomy-to-page-link';
import { convertWPImgToImg } from './convert-wp-image-to-img';

describe('convert-post-preview-to-article-preview', () => {
  /* eslint-disable max-statements */
  it('converts a RecentWPPost object to a RecentArticle object', () => {
    const post: WPPostPreview = {
      acfPosts: null,
      commentCount: 6,
      contentParts: {
        beforeMore:
          'Et quos fuga molestias. Voluptatum nobis mollitia eaque dolorem sunt. Dolores dignissimos consequuntur mollitia. Enim molestias quibusdam sequi. Dolore ut quo. Libero iure non vel reprehenderit.',
      },
      databaseId: 5,
      date: '2021-04-28',
      featuredImage: null,
      info: {
        wordsCount: 450,
      },
      modified: '2021-04-29',
      slug: '/the-post-slug',
      title: 'et tempore sint',
    };
    const result = convertPostPreviewToArticlePreview(post);

    expect(result.id).toBe(post.databaseId);
    expect(result.intro).toBe(post.contentParts.beforeMore);
    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.thematics).toBeUndefined();
    expect(result.meta.wordsCount).toBe(post.info.wordsCount);
    expect(result.slug).toBe(post.slug);
    expect(result.title).toBe(post.title);
  });
  /* eslint-enable max-statements */

  it('can return 0 as comment count if not defined', () => {
    const post: WPPostPreview = {
      acfPosts: null,
      commentCount: null,
      contentParts: {
        beforeMore:
          'Et quos fuga molestias. Voluptatum nobis mollitia eaque dolorem sunt. Dolores dignissimos consequuntur mollitia. Enim molestias quibusdam sequi. Dolore ut quo. Libero iure non vel reprehenderit.',
      },
      databaseId: 5,
      date: '2021-04-28',
      featuredImage: null,
      info: {
        wordsCount: 450,
      },
      modified: '2021-04-29',
      slug: '/the-post-slug',
      title: 'et tempore sint',
    };
    const result = convertPostPreviewToArticlePreview(post);

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

  it('can convert the cover', () => {
    const post = {
      acfPosts: null,
      commentCount: null,
      contentParts: {
        beforeMore:
          'Et quos fuga molestias. Voluptatum nobis mollitia eaque dolorem sunt. Dolores dignissimos consequuntur mollitia. Enim molestias quibusdam sequi. Dolore ut quo. Libero iure non vel reprehenderit.',
      },
      databaseId: 5,
      date: '2021-04-28',
      featuredImage: {
        node: {
          altText: 'molestiae praesentium animi',
          mediaDetails: {
            height: 480,
            width: 640,
          },
          sourceUrl: 'https://picsum.photos/640/480',
          title: 'ullam deserunt perspiciatis',
        },
      },
      info: {
        wordsCount: 450,
      },
      modified: '2021-04-29',
      slug: '/the-post-slug',
      title: 'et tempore sint',
    } satisfies WPPostPreview;
    const result = convertPostPreviewToArticlePreview(post);

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

  it('can convert the thematics', () => {
    const thematics: WPThematicPreview[] = [
      { databaseId: 2, slug: '/thematic1', title: 'aut quis vel' },
      { databaseId: 8, slug: '/thematic2', title: 'vel sint autem' },
    ];
    const post: WPPostPreview = {
      acfPosts: {
        postsInThematic: thematics,
      },
      commentCount: 6,
      contentParts: {
        beforeMore:
          'Et quos fuga molestias. Voluptatum nobis mollitia eaque dolorem sunt. Dolores dignissimos consequuntur mollitia. Enim molestias quibusdam sequi. Dolore ut quo. Libero iure non vel reprehenderit.',
      },
      databaseId: 5,
      date: '2021-04-28',
      featuredImage: null,
      info: {
        wordsCount: 450,
      },
      modified: '2021-04-29',
      slug: '/the-post-slug',
      title: 'et tempore sint',
    };
    const result = convertPostPreviewToArticlePreview(post);

    expect(result.meta.thematics).toStrictEqual(
      thematics.map(convertTaxonomyToPageLink)
    );
  });
});