143 lines
3.1 KiB
JavaScript
143 lines
3.1 KiB
JavaScript
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
import { mount } from '@vue/test-utils';
|
|
import AdminLogin from '../../../src/views/AdminLogin.vue';
|
|
|
|
/**
|
|
* Tests for AdminLogin component
|
|
* Tests authentication flow on frontend
|
|
*/
|
|
describe('AdminLogin Component', () => {
|
|
let wrapper;
|
|
|
|
beforeEach(() => {
|
|
// Mock router
|
|
vi.stubGlobal('useRouter', () => ({
|
|
push: vi.fn()
|
|
}));
|
|
});
|
|
|
|
afterEach(() => {
|
|
if (wrapper) {
|
|
wrapper.unmount();
|
|
}
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('renders login form', () => {
|
|
wrapper = mount(AdminLogin, {
|
|
global: {
|
|
stubs: {
|
|
RouterLink: true
|
|
},
|
|
mocks: {
|
|
useRouter: () => ({
|
|
push: vi.fn()
|
|
}),
|
|
useAuth: () => ({
|
|
login: vi.fn(),
|
|
isLoading: { value: false },
|
|
error: { value: null }
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
expect(wrapper.find('h1').text()).toBe('Admin Login');
|
|
expect(wrapper.find('form').exists()).toBe(true);
|
|
});
|
|
|
|
it('has password input field', () => {
|
|
wrapper = mount(AdminLogin, {
|
|
global: {
|
|
stubs: {
|
|
RouterLink: true
|
|
},
|
|
mocks: {
|
|
useRouter: () => ({
|
|
push: vi.fn()
|
|
}),
|
|
useAuth: () => ({
|
|
login: vi.fn(),
|
|
isLoading: { value: false },
|
|
error: { value: null }
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
const input = wrapper.find('#password');
|
|
expect(input.exists()).toBe(true);
|
|
expect(input.attributes('type')).toBe('password');
|
|
});
|
|
|
|
it('has password visibility toggle', () => {
|
|
wrapper = mount(AdminLogin, {
|
|
global: {
|
|
stubs: {
|
|
RouterLink: true
|
|
},
|
|
mocks: {
|
|
useRouter: () => ({
|
|
push: vi.fn()
|
|
}),
|
|
useAuth: () => ({
|
|
login: vi.fn(),
|
|
isLoading: { value: false },
|
|
error: { value: null }
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
const toggleButton = wrapper.find('.toggle-password');
|
|
expect(toggleButton.exists()).toBe(true);
|
|
});
|
|
|
|
it('displays login button', () => {
|
|
wrapper = mount(AdminLogin, {
|
|
global: {
|
|
stubs: {
|
|
RouterLink: true
|
|
},
|
|
mocks: {
|
|
useRouter: () => ({
|
|
push: vi.fn()
|
|
}),
|
|
useAuth: () => ({
|
|
login: vi.fn(),
|
|
isLoading: { value: false },
|
|
error: { value: null }
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
const button = wrapper.find('button[type="submit"]');
|
|
expect(button.exists()).toBe(true);
|
|
expect(button.text()).toContain('Login');
|
|
});
|
|
|
|
it('shows info cards', () => {
|
|
wrapper = mount(AdminLogin, {
|
|
global: {
|
|
stubs: {
|
|
RouterLink: true
|
|
},
|
|
mocks: {
|
|
useRouter: () => ({
|
|
push: vi.fn()
|
|
}),
|
|
useAuth: () => ({
|
|
login: vi.fn(),
|
|
isLoading: { value: false },
|
|
error: { value: null }
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
const infoCards = wrapper.findAll('.info-card');
|
|
expect(infoCards.length).toBeGreaterThan(0);
|
|
});
|
|
});
|