✅ Add unit tests for AdminLogin view to improve test coverage
This commit is contained in:
142
code/websites/pokedex.online/tests/unit/views/AdminLogin.test.js
Normal file
142
code/websites/pokedex.online/tests/unit/views/AdminLogin.test.js
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user