38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { EmailSignupViewModel } from './EmailSignupViewModel';
|
|
import type { EmailSignupViewData } from '../view-data/EmailSignupViewData';
|
|
|
|
describe('EmailSignupViewModel', () => {
|
|
it('wraps EmailSignupViewData and exposes UI helpers', () => {
|
|
const viewData: EmailSignupViewData = {
|
|
email: 'test@example.com',
|
|
message: 'Thanks for signing up!',
|
|
status: 'success',
|
|
};
|
|
|
|
const viewModel = new EmailSignupViewModel(viewData);
|
|
|
|
expect(viewModel.email).toBe('test@example.com');
|
|
expect(viewModel.message).toBe('Thanks for signing up!');
|
|
expect(viewModel.status).toBe('success');
|
|
|
|
expect(viewModel.isSuccess).toBe(true);
|
|
expect(viewModel.isError).toBe(false);
|
|
expect(viewModel.isInfo).toBe(false);
|
|
});
|
|
|
|
it('reflects error status helpers', () => {
|
|
const viewData: EmailSignupViewData = {
|
|
email: 'test@example.com',
|
|
message: 'Something went wrong',
|
|
status: 'error',
|
|
};
|
|
|
|
const viewModel = new EmailSignupViewModel(viewData);
|
|
|
|
expect(viewModel.isSuccess).toBe(false);
|
|
expect(viewModel.isError).toBe(true);
|
|
expect(viewModel.isInfo).toBe(false);
|
|
});
|
|
});
|