summaryrefslogtreecommitdiff
path: root/spec/frontend/whats_new/components/feature_spec.js
blob: 9e9cb59c0d687a6547cd33a3a6719d44719ed965 (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
import { shallowMount } from '@vue/test-utils';
import Feature from '~/whats_new/components/feature.vue';

describe("What's new single feature", () => {
  /** @type {import("@vue/test-utils").Wrapper} */
  let wrapper;

  const exampleFeature = {
    title: 'Compliance pipeline configurations',
    body:
      '<p>We are thrilled to announce that it is now possible to define enforceable pipelines that will run for any project assigned a corresponding compliance framework.</p>',
    stage: 'Manage',
    'self-managed': true,
    'gitlab-com': true,
    packages: ['Ultimate'],
    url: 'https://docs.gitlab.com/ee/user/project/settings/#compliance-pipeline-configuration',
    image_url: 'https://img.youtube.com/vi/upLJ_equomw/hqdefault.jpg',
    published_at: '2021-04-22T00:00:00.000Z',
    release: '13.11',
  };

  const findReleaseDate = () => wrapper.find('[data-testid="release-date"]');

  const createWrapper = ({ feature } = {}) => {
    wrapper = shallowMount(Feature, {
      propsData: { feature },
    });
  };

  afterEach(() => {
    wrapper.destroy();
    wrapper = null;
  });

  it('renders the date', () => {
    createWrapper({ feature: exampleFeature });
    expect(findReleaseDate().text()).toBe('April 22, 2021');
  });

  describe('when the published_at is null', () => {
    it("doesn't render the date", () => {
      createWrapper({ feature: { ...exampleFeature, published_at: null } });
      expect(findReleaseDate().exists()).toBe(false);
    });
  });
});