@letanure/resend-cli
Version:
A command-line interface for Resend email API
64 lines • 2.38 kB
JavaScript
import { describe, expect, it } from 'vitest';
import { sendEmail } from '../action.js';
describe('sendEmail', () => {
const testEmailData = {
to: 'test@example.com',
from: 'sender@example.com',
subject: 'Test Subject',
text: 'Test message',
};
it('returns success result structure', async () => {
const result = await sendEmail(testEmailData, 'test-api-key');
expect(result).toHaveProperty('success');
expect(result.success).toBe(true);
expect(result.data).toBeDefined();
expect(result.data?.id).toBe('test-email-id');
});
it('accepts CreateEmailOptions interface', async () => {
const emailData = {
to: ['user1@example.com', 'user2@example.com'],
from: 'sender@example.com',
subject: 'Test',
html: '<p>Hello</p>',
text: 'Hello',
};
const result = await sendEmail(emailData, 'test-api-key');
expect(result.success).toBe(true);
});
it('requires api key parameter', async () => {
// Function should accept any string as API key
const result = await sendEmail(testEmailData, 'any-key');
expect(result).toBeDefined();
});
it('handles complex email data', async () => {
const complexEmailData = {
to: 'test@example.com',
from: 'sender@example.com',
subject: 'Test',
html: '<h1>Hello</h1>',
headers: { 'X-Test': 'value' },
attachments: [
{
content: 'base64content',
filename: 'test.txt',
},
],
};
const result = await sendEmail(complexEmailData, 'test-api-key');
expect(result.success).toBe(true);
});
it('returns correct ApiResult type', async () => {
const result = await sendEmail(testEmailData, 'test-api-key');
// Test ApiResult structure
if (result.success && result.data) {
expect(result).toHaveProperty('data');
expect(result.data).toHaveProperty('id');
expect(typeof result.data.id).toBe('string');
}
else {
expect(result).toHaveProperty('error');
expect(typeof result.error).toBe('string');
}
});
});
//# sourceMappingURL=action.test.js.map