| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import { AdminUiPlugin } from '@vendure/admin-ui-plugin';
- import { DefaultLogger, DefaultSearchPlugin, LogLevel, mergeConfig } from '@vendure/core';
- import { createTestEnvironment, registerInitializer, SqljsInitializer, testConfig } from '@vendure/testing';
- import gql from 'graphql-tag';
- import localtunnel from 'localtunnel';
- import path from 'path';
- import { initialData } from '../../../e2e-common/e2e-initial-data';
- import { molliePaymentHandler } from '../package/mollie/mollie.handler';
- import { MolliePlugin } from '../src/mollie';
- import { CREATE_PAYMENT_METHOD } from './graphql/admin-queries';
- import {
- CreatePaymentMethodMutation,
- CreatePaymentMethodMutationVariables,
- LanguageCode,
- } from './graphql/generated-admin-types';
- import { ADD_ITEM_TO_ORDER, APPLY_COUPON_CODE } from './graphql/shop-queries';
- import { CREATE_MOLLIE_PAYMENT_INTENT, setShipping } from './payment-helpers';
- /**
- * This should only be used to locally test the Mollie payment plugin
- * Make sure you have `MOLLIE_APIKEY=test_xxxx` in your .env file
- */
- /* eslint-disable @typescript-eslint/no-floating-promises */
- async function runMollieDevServer() {
- // eslint-disable-next-line @typescript-eslint/no-var-requires
- require('dotenv').config();
- registerInitializer('sqljs', new SqljsInitializer(path.join(__dirname, '__data__')));
- const tunnel = await localtunnel({ port: 3050 });
- const config = mergeConfig(testConfig, {
- plugins: [
- ...testConfig.plugins,
- DefaultSearchPlugin,
- AdminUiPlugin.init({
- route: 'admin',
- port: 5001,
- }),
- MolliePlugin.init({ vendureHost: tunnel.url }),
- ],
- logger: new DefaultLogger({ level: LogLevel.Debug }),
- apiOptions: {
- adminApiPlayground: true,
- shopApiPlayground: true,
- },
- });
- const { server, shopClient, adminClient } = createTestEnvironment(config as any);
- await server.init({
- initialData,
- productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
- customerCount: 1,
- });
- // Set EUR as currency for Mollie
- await adminClient.asSuperAdmin();
- await adminClient.query(gql`
- mutation {
- updateChannel(input: { id: "T_1", currencyCode: EUR }) {
- __typename
- }
- }
- `);
- // Create method
- await adminClient.query<CreatePaymentMethodMutation, CreatePaymentMethodMutationVariables>(
- CREATE_PAYMENT_METHOD,
- {
- input: {
- code: 'mollie',
- translations: [
- {
- languageCode: LanguageCode.en,
- name: 'Mollie payment test',
- description: 'This is a Mollie test payment method',
- },
- ],
- enabled: true,
- handler: {
- code: molliePaymentHandler.code,
- arguments: [
- {
- name: 'redirectUrl',
- value: `${tunnel.url}/admin/orders?filter=open&page=1`,
- },
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- { name: 'apiKey', value: process.env.MOLLIE_APIKEY! },
- { name: 'autoCapture', value: 'false' },
- ],
- },
- },
- },
- );
- // Prepare a test order where the total is 0
- await shopClient.asUserWithCredentials('hayden.zieme12@hotmail.com', 'test');
- await shopClient.query(ADD_ITEM_TO_ORDER, {
- productVariantId: 'T_1',
- quantity: 1,
- });
- await setShipping(shopClient);
- await shopClient.query(APPLY_COUPON_CODE, { couponCode: 'FREE_SHIPPING' });
- // Create Payment Intent
- const result = await shopClient.query(CREATE_MOLLIE_PAYMENT_INTENT, {
- input: {
- locale: 'nl_NL',
- // immediateCapture: true,
- },
- });
- // eslint-disable-next-line no-console
- console.log('Payment intent result', result);
- // Add another item to the order
- await shopClient.query(ADD_ITEM_TO_ORDER, {
- productVariantId: 'T_1',
- quantity: 1,
- });
- // Wait X seconds and create another payment intent
- await new Promise(resolve => setTimeout(resolve, 20000));
- const result2 = await shopClient.query(CREATE_MOLLIE_PAYMENT_INTENT, {
- input: {
- locale: 'nl_NL',
- },
- });
- // eslint-disable-next-line no-console
- console.log('Second payment intent result', result2);
- }
- (async () => {
- await runMollieDevServer();
- })();
|