mirror of
https://github.com/duhanbalci/iyzico.git
synced 2026-03-03 20:29:18 +00:00
init
This commit is contained in:
338
tests/integration/reporting.test.ts
Normal file
338
tests/integration/reporting.test.ts
Normal file
@@ -0,0 +1,338 @@
|
||||
/**
|
||||
* Reporting integration tests
|
||||
*/
|
||||
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { createTestClient, assertSuccessResponse } from '../setup';
|
||||
import type { ErrorResponse } from '../../src/types';
|
||||
|
||||
describe('Reporting Integration Tests', () => {
|
||||
const client = createTestClient();
|
||||
|
||||
it('should get payment transactions for a date', async () => {
|
||||
// Use today's date
|
||||
const today = new Date();
|
||||
const dateString = today.toISOString().split('T')[0]; // YYYY-MM-DD format
|
||||
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 1,
|
||||
transactionDate: dateString,
|
||||
locale: 'tr',
|
||||
conversationId: `test-transactions-${Date.now()}`,
|
||||
});
|
||||
|
||||
assertSuccessResponse(response);
|
||||
expect(response.currentPage).toBe(1);
|
||||
// Transactions might be empty if no transactions exist for the date
|
||||
expect(response.transactions).toBeDefined();
|
||||
});
|
||||
|
||||
it('should get payment details by paymentId', async () => {
|
||||
// First create a payment to get a paymentId
|
||||
const { testNon3DPaymentRequest } = await import('../fixtures/payment');
|
||||
const paymentRequest = {
|
||||
...testNon3DPaymentRequest,
|
||||
conversationId: `test-reporting-${Date.now()}`,
|
||||
};
|
||||
|
||||
const paymentResponse = await client.payment.createNon3DS(paymentRequest);
|
||||
assertSuccessResponse(paymentResponse);
|
||||
|
||||
if (paymentResponse.paymentId) {
|
||||
// Then get payment details
|
||||
const detailsResponse = await client.reporting.getPaymentDetails({
|
||||
paymentId: paymentResponse.paymentId,
|
||||
locale: 'tr',
|
||||
conversationId: `test-details-${Date.now()}`,
|
||||
});
|
||||
|
||||
assertSuccessResponse(detailsResponse);
|
||||
expect(detailsResponse.payments).toBeTruthy();
|
||||
if (detailsResponse.payments && detailsResponse.payments.length > 0) {
|
||||
// Convert to string for comparison as API may return number or string
|
||||
const returnedPaymentId = String(detailsResponse.payments[0].paymentId);
|
||||
expect(returnedPaymentId).toBe(String(paymentResponse.paymentId));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('should get payment details by paymentConversationId', async () => {
|
||||
// First create a payment to get a conversationId
|
||||
const { testNon3DPaymentRequest } = await import('../fixtures/payment');
|
||||
const conversationId = `test-reporting-conv-${Date.now()}`;
|
||||
const paymentRequest = {
|
||||
...testNon3DPaymentRequest,
|
||||
conversationId,
|
||||
};
|
||||
|
||||
const paymentResponse = await client.payment.createNon3DS(paymentRequest);
|
||||
assertSuccessResponse(paymentResponse);
|
||||
|
||||
if (paymentResponse.conversationId) {
|
||||
// Then get payment details using paymentConversationId
|
||||
const detailsResponse = await client.reporting.getPaymentDetails({
|
||||
paymentConversationId: paymentResponse.conversationId,
|
||||
locale: 'tr',
|
||||
conversationId: `test-details-conv-${Date.now()}`,
|
||||
});
|
||||
|
||||
assertSuccessResponse(detailsResponse);
|
||||
expect(detailsResponse.payments).toBeTruthy();
|
||||
}
|
||||
});
|
||||
|
||||
describe('Edge Cases - Invalid Fields', () => {
|
||||
it('should handle invalid date format for getPaymentTransactions', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 1,
|
||||
transactionDate: 'invalid-date-format',
|
||||
locale: 'tr',
|
||||
conversationId: `test-invalid-date-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle future date for getPaymentTransactions', async () => {
|
||||
const futureDate = new Date();
|
||||
futureDate.setFullYear(futureDate.getFullYear() + 1);
|
||||
const dateString = futureDate.toISOString().split('T')[0];
|
||||
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 1,
|
||||
transactionDate: dateString,
|
||||
locale: 'tr',
|
||||
conversationId: `test-future-date-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
// Future dates might return empty results or error
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle negative page number', async () => {
|
||||
const today = new Date();
|
||||
const dateString = today.toISOString().split('T')[0];
|
||||
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: -1,
|
||||
transactionDate: dateString,
|
||||
locale: 'tr',
|
||||
conversationId: `test-negative-page-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle zero page number', async () => {
|
||||
const today = new Date();
|
||||
const dateString = today.toISOString().split('T')[0];
|
||||
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 0,
|
||||
transactionDate: dateString,
|
||||
locale: 'tr',
|
||||
conversationId: `test-zero-page-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle very large page number', async () => {
|
||||
const today = new Date();
|
||||
const dateString = today.toISOString().split('T')[0];
|
||||
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 999999,
|
||||
transactionDate: dateString,
|
||||
locale: 'tr',
|
||||
conversationId: `test-large-page-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
// Large page numbers might return empty results or error
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle missing transactionDate', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 1,
|
||||
transactionDate: undefined as any,
|
||||
locale: 'tr',
|
||||
conversationId: `test-missing-date-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle invalid paymentId for getPaymentDetails', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentDetails({
|
||||
paymentId: 'invalid-payment-id-99999',
|
||||
locale: 'tr',
|
||||
conversationId: `test-invalid-paymentid-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle empty paymentId for getPaymentDetails', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentDetails({
|
||||
paymentId: '',
|
||||
locale: 'tr',
|
||||
conversationId: `test-empty-paymentid-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle invalid paymentConversationId for getPaymentDetails', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentDetails({
|
||||
paymentConversationId: 'invalid-conversation-id-99999',
|
||||
locale: 'tr',
|
||||
conversationId: `test-invalid-convid-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle empty paymentConversationId for getPaymentDetails', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentDetails({
|
||||
paymentConversationId: '',
|
||||
locale: 'tr',
|
||||
conversationId: `test-empty-convid-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle missing both paymentId and paymentConversationId', async () => {
|
||||
try {
|
||||
const response = await client.reporting.getPaymentDetails({
|
||||
locale: 'tr',
|
||||
conversationId: `test-missing-ids-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle invalid locale', async () => {
|
||||
const today = new Date();
|
||||
const dateString = today.toISOString().split('T')[0];
|
||||
|
||||
try {
|
||||
const response = await client.reporting.getPaymentTransactions({
|
||||
page: 1,
|
||||
transactionDate: dateString,
|
||||
locale: 'invalid' as any,
|
||||
conversationId: `test-invalid-locale-${Date.now()}`,
|
||||
});
|
||||
expect(response).toBeDefined();
|
||||
expect(response.status).toBeDefined();
|
||||
if (response.status === 'failure') {
|
||||
const errorResponse = response as unknown as ErrorResponse;
|
||||
expect(errorResponse.errorCode || errorResponse.errorMessage).toBeTruthy();
|
||||
}
|
||||
} catch (error: any) {
|
||||
expect(error).toBeDefined();
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user