pleroma-fe/test/unit/specs/components/user_profile.spec.js
Henry Jameson 1c53ac84cc manual lint
2026-01-06 17:32:22 +02:00

219 lines
4.7 KiB
JavaScript

import { mount } from '@vue/test-utils'
import UserProfile from 'src/components/user_profile/user_profile.vue'
import { getters } from 'src/modules/users.js'
import backendInteractorService from 'src/services/backend_interactor_service/backend_interactor_service.js'
import { createStore } from 'vuex'
const mutations = {
clearTimeline: () => {
/* no-op */
},
}
const actions = {
fetchUser: () => {
/* no-op */
},
fetchUserByScreenName: () => {
/* no-op */
},
}
const testGetters = {
findUser: (state) => getters.findUser(state.users),
findUserByName: (state) => getters.findUserByName(state.users),
relationship: (state) => getters.relationship(state.users),
mergedConfig: () => ({
colors: '',
highlight: {},
customTheme: {
colors: [],
},
}),
}
const localUser = {
id: 100,
is_local: true,
screen_name: 'testUser',
screen_name_ui: 'testUser',
}
const extUser = {
id: 100,
is_local: false,
screen_name: 'testUser@test.instance',
screen_name_ui: 'testUser@test.instance',
}
const externalProfileStore = createStore({
mutations,
actions,
getters: testGetters,
state: {
api: {
fetchers: {},
backendInteractor: backendInteractorService(''),
},
interface: {
browserSupport: '',
},
instance: {
hideUserStats: true,
},
statuses: {
timelines: {
user: {
statuses: [],
statusesObject: {},
faves: [],
visibleStatuses: [],
visibleStatusesObject: {},
newStatusCount: 0,
maxId: 0,
minVisibleId: 0,
loading: false,
followers: [],
friends: [],
viewing: 'statuses',
userId: 100,
flushMarker: 0,
},
media: {
statuses: [],
statusesObject: {},
faves: [],
visibleStatuses: [],
visibleStatusesObject: {},
newStatusCount: 0,
maxId: 0,
minVisibleId: 0,
loading: false,
followers: [],
friends: [],
viewing: 'statuses',
userId: 100,
flushMarker: 0,
},
},
},
users: {
currentUser: {
credentials: '',
},
usersObject: { 100: extUser },
usersByNameObject: {},
users: [extUser],
relationships: {},
},
},
})
const localProfileStore = createStore({
mutations,
actions,
getters: testGetters,
state: {
api: {
fetchers: {},
backendInteractor: backendInteractorService(''),
},
interface: {
browserSupport: '',
},
config: {
colors: '',
highlight: {},
customTheme: {
colors: [],
},
},
instance: {
hideUserStats: true,
},
statuses: {
timelines: {
user: {
statuses: [],
statusesObject: {},
faves: [],
visibleStatuses: [],
visibleStatusesObject: {},
newStatusCount: 0,
maxId: 0,
minVisibleId: 0,
loading: false,
followers: [],
friends: [],
viewing: 'statuses',
userId: 100,
flushMarker: 0,
},
media: {
statuses: [],
statusesObject: {},
faves: [],
visibleStatuses: [],
visibleStatusesObject: {},
newStatusCount: 0,
maxId: 0,
minVisibleId: 0,
loading: false,
followers: [],
friends: [],
viewing: 'statuses',
userId: 100,
flushMarker: 0,
},
},
},
users: {
currentUser: {
credentials: '',
},
usersObject: { 100: localUser },
usersByNameObject: { testuser: localUser },
users: [localUser],
relationships: {},
},
},
})
// https://github.com/vuejs/test-utils/issues/1382
describe.skip('UserProfile', () => {
it('renders external profile', () => {
const wrapper = mount(UserProfile, {
global: {
plugins: [externalProfileStore],
mocks: {
$route: {
params: { id: 100 },
name: 'external-user-profile',
},
$t: (msg) => msg,
},
},
})
expect(wrapper.find('.user-screen-name').text()).to.eql(
'@testUser@test.instance',
)
})
it('renders local profile', () => {
const wrapper = mount(UserProfile, {
global: {
plugins: [localProfileStore],
mocks: {
$route: {
params: { name: 'testUser' },
name: 'user-profile',
},
$t: (msg) => msg,
},
},
})
expect(wrapper.find('.user-screen-name').text()).to.eql('@testUser')
})
})