mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
test: add SearchResults test/rename classes
This commit is contained in:
parent
150442db01
commit
79c1cc02c1
@ -0,0 +1,79 @@
|
|||||||
|
import { config, mount } from '@vue/test-utils'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
import SearchResults from './SearchResults'
|
||||||
|
import { post } from '~/components/PostTeaser/PostTeaser.story'
|
||||||
|
import { user } from '~/components/UserTeaser/UserTeaser.story'
|
||||||
|
|
||||||
|
const localVue = global.localVue
|
||||||
|
|
||||||
|
config.stubs['client-only'] = '<span><slot /></span>'
|
||||||
|
config.stubs['nuxt-link'] = '<span><slot /></span>'
|
||||||
|
|
||||||
|
describe('SearchResults', () => {
|
||||||
|
let mocks, getters, propsData, wrapper
|
||||||
|
const Wrapper = () => {
|
||||||
|
const store = new Vuex.Store({
|
||||||
|
getters,
|
||||||
|
})
|
||||||
|
return mount(SearchResults, { mocks, localVue, propsData, store })
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
mocks = {
|
||||||
|
$t: jest.fn(),
|
||||||
|
}
|
||||||
|
getters = {
|
||||||
|
'auth/user': () => {
|
||||||
|
return { id: 'u343', name: 'Matt' }
|
||||||
|
},
|
||||||
|
'auth/isModerator': () => false,
|
||||||
|
}
|
||||||
|
propsData = {}
|
||||||
|
wrapper = Wrapper()
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('mount', () => {
|
||||||
|
it('renders tab-navigation component', () => {
|
||||||
|
expect(wrapper.find('.tab-navigation').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('searchResults', () => {
|
||||||
|
describe('contains no results', () => {
|
||||||
|
it('renders hc-empty component', () => {
|
||||||
|
expect(wrapper.find('.hc-empty').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('contains posts', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
wrapper.setData({ posts: [post], activeTab: 'Post' })
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders post-teaser component', () => {
|
||||||
|
expect(wrapper.find('.post-teaser').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('contains users', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
wrapper.setData({ users: [user], activeTab: 'User' })
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders user-list', () => {
|
||||||
|
expect(wrapper.find('.user-list').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('switchTab', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
wrapper.setData({ posts: [post], users: [user], activeTab: 'Post' })
|
||||||
|
wrapper.find('.tab-navigation').vm.$emit('switchTab', 'User')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('switches activeTab when event is emitted', () => {
|
||||||
|
expect(wrapper.find('.user-list').exists()).toBe(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@ -1,8 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="search-results">
|
<div class="search-results">
|
||||||
<tab-navigation :tabs="tabOptions" :activeTab="activeTab" @switchTab="switchTab" />
|
<tab-navigation :tabs="tabOptions" :activeTab="activeTab" @switchTab="switchTab" />
|
||||||
<section :class="['results', activeTab === 'User' && '--user', !activeResources.length && '--empty']">
|
<section
|
||||||
<hc-empty v-if="!activeResources.length"
|
:class="['results', activeTab === 'User' && '--user', !activeResources.length && '--empty']"
|
||||||
|
>
|
||||||
|
<hc-empty
|
||||||
|
v-if="!activeResources.length"
|
||||||
icon="tasks"
|
icon="tasks"
|
||||||
:message="$t('search.no-results', { search })"
|
:message="$t('search.no-results', { search })"
|
||||||
/>
|
/>
|
||||||
@ -49,7 +52,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
posts: [],
|
posts: [],
|
||||||
users: [],
|
users: [],
|
||||||
activeTab: 'Post',
|
activeTab: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -125,7 +128,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.user-list > .item {
|
.user-list > .item {
|
||||||
transition: opacity .1s;
|
transition: opacity 0.1s;
|
||||||
|
|
||||||
&:not(:last-child) {
|
&:not(:last-child) {
|
||||||
margin-bottom: $space-small;
|
margin-bottom: $space-small;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<ul class="tabs">
|
<ul class="tab-navigation">
|
||||||
<li
|
<li
|
||||||
v-for="tab in tabs"
|
v-for="tab in tabs"
|
||||||
:key="tab.type"
|
:key="tab.type"
|
||||||
@ -27,7 +27,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.tabs {
|
.tab-navigation {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-top: $space-small;
|
margin-top: $space-small;
|
||||||
|
|
||||||
|
|||||||
@ -90,7 +90,7 @@ describe('PostIndex', () => {
|
|||||||
expect(wrapper.vm.selected).toEqual(propsData.filterOptions[1].label)
|
expect(wrapper.vm.selected).toEqual(propsData.filterOptions[1].label)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('refreshes the notificaitons', () => {
|
it('refreshes the notifications', () => {
|
||||||
expect(mocks.$apollo.queries.notifications.refresh).toHaveBeenCalledTimes(1)
|
expect(mocks.$apollo.queries.notifications.refresh).toHaveBeenCalledTimes(1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user