summaryrefslogtreecommitdiff
path: root/spec/contracts/consumer/specs/project/pipeline/show.spec.js
blob: be6abb78eb50dc50071a6c71bf6f63107cb57680 (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
import { pactWith } from 'jest-pact';
import { GraphQLInteraction } from '@pact-foundation/pact';

import { extractGraphQLQuery } from '../../../helpers/graphql_query_extractor';

import { PipelineHeaderData } from '../../../fixtures/project/pipeline/get_pipeline_header_data.fixture';
import { DeletePipeline } from '../../../fixtures/project/pipeline/delete_pipeline.fixture';

import { getPipelineHeaderDataRequest, deletePipeline } from '../../../resources/graphql/pipelines';

const CONSUMER_NAME = 'Pipelines#show';
const CONSUMER_LOG = '../logs/consumer.log';
const CONTRACT_DIR = '../contracts/project/pipeline/show';
const GET_PIPELINE_HEADER_DATA_PROVIDER_NAME = 'GET pipeline header data';
const DELETE_PIPELINE_PROVIDER_NAME = 'DELETE pipeline';

// GraphQL query: getPipelineHeaderData
pactWith(
  {
    consumer: CONSUMER_NAME,
    provider: GET_PIPELINE_HEADER_DATA_PROVIDER_NAME,
    log: CONSUMER_LOG,
    dir: CONTRACT_DIR,
  },

  (provider) => {
    describe(GET_PIPELINE_HEADER_DATA_PROVIDER_NAME, () => {
      beforeEach(async () => {
        const query = await extractGraphQLQuery(
          'app/assets/javascripts/pipelines/graphql/queries/get_pipeline_header_data.query.graphql',
        );
        const graphqlQuery = new GraphQLInteraction()
          .given(PipelineHeaderData.scenario.state)
          .uponReceiving(PipelineHeaderData.scenario.uponReceiving)
          .withQuery(query)
          .withRequest(PipelineHeaderData.request)
          .withVariables(PipelineHeaderData.variables)
          .willRespondWith(PipelineHeaderData.success);

        provider.addInteraction(graphqlQuery);
      });

      it('returns a successful body', async () => {
        const pipelineHeaderData = await getPipelineHeaderDataRequest({
          url: provider.mockService.baseUrl,
        });

        expect(pipelineHeaderData.data).toEqual(PipelineHeaderData.body);
      });
    });
  },
);

// GraphQL query: deletePipeline
pactWith(
  {
    consumer: CONSUMER_NAME,
    provider: DELETE_PIPELINE_PROVIDER_NAME,
    log: CONSUMER_LOG,
    dir: CONTRACT_DIR,
  },

  (provider) => {
    describe(DELETE_PIPELINE_PROVIDER_NAME, () => {
      beforeEach(async () => {
        const query = await extractGraphQLQuery(
          'app/assets/javascripts/pipelines/graphql/mutations/delete_pipeline.mutation.graphql',
        );
        const graphqlQuery = new GraphQLInteraction()
          .given(DeletePipeline.scenario.state)
          .uponReceiving(DeletePipeline.scenario.uponReceiving)
          .withQuery(query)
          .withRequest(DeletePipeline.request)
          .withVariables(DeletePipeline.variables)
          .willRespondWith(DeletePipeline.success);

        provider.addInteraction(graphqlQuery);
      });

      it('returns a successful body', async () => {
        const deletePipelineResponse = await deletePipeline({
          url: provider.mockService.baseUrl,
        });

        expect(deletePipelineResponse.status).toEqual(DeletePipeline.success.status);
      });
    });
  },
);