import { v4 } from 'uuid';
import { TransactionRequestEventDto } from './transactionRequestEventDto';
import { TransactionType } from './types.d';
import { TransactionDto } from './transactionDto';

describe('TransactionRequestEventDto test suite', () => {
  it('should be able to create TransactionRequestEventDto instance', () => {
    const accessToken = v4();
    const idToken = v4();
    const userIdentityId = v4();
    const transactionId = v4();
    const stan = v4();
    const catid = v4();
    const caid = v4();
    const mcc = v4();
    const iso8583 = v4();
    const iso8583Length = v4();
    const deviceUuid = v4();
    const siteUuid = v4();
    const entityUuid = v4();
    const timestamp = v4();
    const timestampEpoch = v4();
    const timestampUtc = v4();
    const ksn = v4();
    const type = TransactionType.PURCHASE;
    const isoMessageType = v4();
    const isoProcessingCode = v4();
    const isoPosEntryMode = v4();
    const isoPosConditionCode = v4();
    const isoCardAcceptorNameLocation = v4();
    const amount = v4();
    const tipAmount = v4();
    const taxAmounts = v4();
    const cashAmount = v4();
    const adjustAmount = v4();
    const surchargeAmount = v4();
    const lineItems = v4();
    const scheme = v4();
    const bin = v4();
    const panMasked = v4();
    const panToken = v4();
    const par = v4();
    const cardMedia = v4();
    const cardFallback = v4();
    const cardholderName = v4();
    const emvTerminalType = v4();
    const emvTerminalCapabilities = v4();
    const emvAdditionalTerminalCapabilities = v4();
    const emvTvrRequest = v4();
    const emvTsrRequest = v4();
    const emvAid = v4();
    const emvCid = v4();
    const emvCvmResult = v4();
    const emvAuthResponseCode = v4();
    const emvTranCurrencyCode = v4();
    const emvTerminalCountryCode = v4();
    const emvAppCurrencyCode = v4();
    const emvIssuerCurrencyCode = v4();
    const commsFallback = v4();
    const offlineApproved = v4();
    const location = v4();
    const locationTimestamp = v4();
    const locationAccuracy = v4();
    const altitude = v4();
    const bearing = v4();
    const speed = v4();
    const speedAccuracy = v4();
    const temperatureDevice = v4();
    const temperatureAmbient = v4();
    const humidity = v4();
    const pressure = v4();
    const light = v4();

    const dto = new TransactionRequestEventDto(
      accessToken,
      idToken,
      userIdentityId,
      transactionId,
      stan,
      catid,
      caid,
      mcc,
      iso8583,
      iso8583Length,
      deviceUuid,
      siteUuid,
      entityUuid,
      timestamp,
      timestampEpoch,
      timestampUtc,
      ksn,
      type,
      isoMessageType,
      isoProcessingCode,
      isoPosEntryMode,
      isoPosConditionCode,
      isoCardAcceptorNameLocation,
      amount,
      tipAmount,
      taxAmounts,
      cashAmount,
      adjustAmount,
      surchargeAmount,
      lineItems,
      scheme,
      bin,
      panMasked,
      panToken,
      par,
      cardMedia,
      cardFallback,
      cardholderName,
      emvTerminalType,
      emvTerminalCapabilities,
      emvAdditionalTerminalCapabilities,
      emvTvrRequest,
      emvTsrRequest,
      emvAid,
      emvCid,
      emvCvmResult,
      emvAuthResponseCode,
      emvTranCurrencyCode,
      emvTerminalCountryCode,
      emvAppCurrencyCode,
      emvIssuerCurrencyCode,
      commsFallback,
      offlineApproved,
      location,
      locationTimestamp,
      locationAccuracy,
      altitude,
      bearing,
      speed,
      speedAccuracy,
      temperatureDevice,
      temperatureAmbient,
      humidity,
      pressure,
      light,
    );
    expect(dto.accessToken).toBe(accessToken);
    expect(dto.idToken).toBe(idToken);
    expect(dto.userIdentityId).toBe(userIdentityId);
    expect(dto.transactionId).toBe(transactionId);
    expect(dto.stan).toBe(stan);
    expect(dto.catid).toBe(catid);
    expect(dto.caid).toBe(caid);
    expect(dto.mcc).toBe(mcc);
    expect(dto.iso8583).toBe(iso8583);
    expect(dto.iso8583Length).toBe(iso8583Length);
    expect(dto.deviceUuid).toBe(deviceUuid);
    expect(dto.siteUuid).toBe(siteUuid);
    expect(dto.entityUuid).toBe(entityUuid);
    expect(dto.timestamp).toBe(timestamp);
    expect(dto.timestampEpoch).toBe(timestampEpoch);
    expect(dto.timestampUtc).toBe(timestampUtc);
    expect(dto.ksn).toBe(ksn);
    expect(dto.type).toBe(type);
    expect(dto.isoMessageType).toBe(isoMessageType);
    expect(dto.isoProcessingCode).toBe(isoProcessingCode);
    expect(dto.isoPosEntryMode).toBe(isoPosEntryMode);
    expect(dto.isoPosConditionCode).toBe(isoPosConditionCode);
    expect(dto.isoCardAcceptorNameLocation).toBe(isoCardAcceptorNameLocation);
    expect(dto.amount).toBe(amount);
    expect(dto.tipAmount).toBe(tipAmount);
    expect(dto.taxAmounts).toBe(taxAmounts);
    expect(dto.cashAmount).toBe(cashAmount);
    expect(dto.adjustAmount).toBe(adjustAmount);
    expect(dto.surchargeAmount).toBe(surchargeAmount);
    expect(dto.lineItems).toBe(lineItems);
    expect(dto.scheme).toBe(scheme);
    expect(dto.bin).toBe(bin);
    expect(dto.panMasked).toBe(panMasked);
    expect(dto.panToken).toBe(panToken);
    expect(dto.par).toBe(par);
    expect(dto.cardMedia).toBe(cardMedia);
    expect(dto.cardFallback).toBe(cardFallback);
    expect(dto.cardholderName).toBe(cardholderName);
    expect(dto.emvTerminalType).toBe(emvTerminalType);
    expect(dto.emvTerminalCapabilities).toBe(emvTerminalCapabilities);
    expect(dto.emvAdditionalTerminalCapabilities).toBe(
      emvAdditionalTerminalCapabilities,
    );
    expect(dto.emvTvrRequest).toBe(emvTvrRequest);
    expect(dto.emvTsrRequest).toBe(emvTsrRequest);
    expect(dto.emvAid).toBe(emvAid);
    expect(dto.emvCid).toBe(emvCid);
    expect(dto.emvCvmResult).toBe(emvCvmResult);
    expect(dto.emvAuthResponseCode).toBe(emvAuthResponseCode);
    expect(dto.emvTranCurrencyCode).toBe(emvTranCurrencyCode);
    expect(dto.emvTerminalCountryCode).toBe(emvTerminalCountryCode);
    expect(dto.emvAppCurrencyCode).toBe(emvAppCurrencyCode);
    expect(dto.emvIssuerCurrencyCode).toBe(emvIssuerCurrencyCode);
    expect(dto.commsFallback).toBe(commsFallback);
    expect(dto.offlineApproved).toBe(offlineApproved);
    expect(dto.location).toBe(location);
    expect(dto.locationTimestamp).toBe(locationTimestamp);
    expect(dto.locationAccuracy).toBe(locationAccuracy);
    expect(dto.altitude).toBe(altitude);
    expect(dto.bearing).toBe(bearing);
    expect(dto.speed).toBe(speed);
    expect(dto.speedAccuracy).toBe(speedAccuracy);
    expect(dto.temperatureDevice).toBe(temperatureDevice);
    expect(dto.temperatureAmbient).toBe(temperatureAmbient);
    expect(dto.humidity).toBe(humidity);
    expect(dto.pressure).toBe(pressure);
    expect(dto.light).toBe(light);
  });
});
