208 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { mount } from '@vue/test-utils'
 | |
| import { createStore } from 'vuex'
 | |
| import UserProfile from 'src/components/user_profile/user_profile.vue'
 | |
| import backendInteractorService from 'src/services/backend_interactor_service/backend_interactor_service.js'
 | |
| import { getters } from 'src/modules/users.js'
 | |
| 
 | |
| const mutations = {
 | |
|   clearTimeline: () => {}
 | |
| }
 | |
| 
 | |
| const actions = {
 | |
|   fetchUser: () => {},
 | |
|   fetchUserByScreenName: () => {}
 | |
| }
 | |
| 
 | |
| const testGetters = {
 | |
|   findUser: state => getters.findUser(state.users),
 | |
|   relationship: state => getters.relationship(state.users),
 | |
|   mergedConfig: state => ({
 | |
|     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 },
 | |
|       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, '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')
 | |
|   })
 | |
| })
 | 
