@letanure/resend-cli
Version:
A command-line interface for Resend email API
131 lines • 5.36 kB
JavaScript
import { describe, expect, it } from 'vitest';
import { DeleteContactOptionsSchema } from '../schema.js';
describe('DeleteContactOptionsSchema', () => {
it('validates correct data with ID', () => {
const validData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
id: '479e3145-dd38-476b-932c-529ceb705947',
};
const result = DeleteContactOptionsSchema.safeParse(validData);
expect(result.success).toBe(true);
});
it('validates correct data with email', () => {
const validData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
email: 'contact@example.com',
};
const result = DeleteContactOptionsSchema.safeParse(validData);
expect(result.success).toBe(true);
});
it('validates correct data with both ID and email', () => {
const validData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
id: '479e3145-dd38-476b-932c-529ceb705947',
email: 'contact@example.com',
};
const result = DeleteContactOptionsSchema.safeParse(validData);
expect(result.success).toBe(true);
});
it('rejects data without audienceId', () => {
const invalidData = {
id: '479e3145-dd38-476b-932c-529ceb705947',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects data without both ID and email', () => {
const invalidData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects empty audienceId', () => {
const invalidData = {
audienceId: '',
id: '479e3145-dd38-476b-932c-529ceb705947',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects empty ID when provided', () => {
const invalidData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
id: '',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects empty email when provided', () => {
const invalidData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
email: '',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('trims whitespace from fields', () => {
const dataWithWhitespace = {
audienceId: ' 78261eea-8f8b-4381-83c6-79fa7120f1cf ',
id: ' 479e3145-dd38-476b-932c-529ceb705947 ',
email: ' contact@example.com ',
};
const result = DeleteContactOptionsSchema.safeParse(dataWithWhitespace);
expect(result.success).toBe(true);
if (result.success) {
expect(result.data.audienceId).toBe('78261eea-8f8b-4381-83c6-79fa7120f1cf');
expect(result.data.id).toBe('479e3145-dd38-476b-932c-529ceb705947');
expect(result.data.email).toBe('contact@example.com');
}
});
it('rejects non-UUID audienceId', () => {
const invalidData = {
audienceId: 'not-a-uuid',
id: '479e3145-dd38-476b-932c-529ceb705947',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects non-UUID contact id', () => {
const invalidData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
id: 'not-a-uuid',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('rejects invalid email format', () => {
const invalidData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
email: 'not-an-email',
};
const result = DeleteContactOptionsSchema.safeParse(invalidData);
expect(result.success).toBe(false);
});
it('accepts valid UUID formats', () => {
const validUUIDs = [
'78261eea-8f8b-4381-83c6-79fa7120f1cf',
'12345678-1234-1234-1234-123456789abc',
'87654321-4321-4321-4321-cba987654321',
];
for (const audienceId of validUUIDs) {
for (const contactId of validUUIDs) {
const validData = { audienceId: audienceId, id: contactId };
const result = DeleteContactOptionsSchema.safeParse(validData);
expect(result.success).toBe(true);
}
}
});
it('accepts valid email formats', () => {
const validEmails = ['user@example.com', 'test.email@domain.co.uk', 'user+tag@example.org', '123@test.com'];
for (const email of validEmails) {
const validData = {
audienceId: '78261eea-8f8b-4381-83c6-79fa7120f1cf',
email,
};
const result = DeleteContactOptionsSchema.safeParse(validData);
expect(result.success).toBe(true);
}
});
});
//# sourceMappingURL=schema.test.js.map