Files
nas-tools/dashboard/frontend/tests/components/Login.test.js
T
Gan, Jimmy d978842c37
Deploy Dashboard (Dev) / Frontend Tests (push) Failing after 43s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
Deploy Dashboard (Dev) / Backend Tests (push) Failing after 4m0s
fix: upgrade vitest to v3, compat fixes for Svelte 5 + jsdom
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 12:37:15 +08:00

51 lines
1.6 KiB
JavaScript

/**
* Component tests for Login.svelte
*/
import { describe, it, expect, beforeEach, vi } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/svelte';
import Login from '../../src/routes/Login.svelte';
// Mock the API module
vi.mock('../../src/lib/api.js', () => ({
login: vi.fn(),
setToken: vi.fn(),
setCurrentUser: vi.fn(),
}));
describe('Login Component', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('should render login form', () => {
render(Login);
// Check for username and password inputs
expect(screen.getByLabelText(/username/i) || screen.getByPlaceholderText(/username/i)).toBeTruthy();
expect(screen.getByLabelText(/password/i) || screen.getByPlaceholderText(/password/i)).toBeTruthy();
});
it('should have login button', () => {
render(Login);
const loginButton = screen.getByRole('button', { name: /sign in/i }) ||
screen.getByText(/sign in/i);
expect(loginButton).toBeTruthy();
});
it('should accept user input', async () => {
render(Login);
const usernameInput = screen.getByLabelText(/username/i) ||
screen.getByPlaceholderText(/username/i);
const passwordInput = screen.getByLabelText(/password/i) ||
screen.getByPlaceholderText(/password/i);
await fireEvent.input(usernameInput, { target: { value: 'testuser' } });
await fireEvent.input(passwordInput, { target: { value: 'testpass' } });
expect(usernameInput.value).toBe('testuser');
expect(passwordInput.value).toBe('testpass');
});
});