Add default column sort on members list table

This commit is contained in:
Patrick Smith 2018-11-27 16:02:56 -05:00
parent 01f588d54d
commit d6d417e8f9
2 changed files with 60 additions and 2 deletions

View File

@ -0,0 +1,54 @@
import { shallowMount } from '@vue/test-utils'
import MembersList from '../members_list'
describe('MembersList', () => {
const members = [{
name: 'Luke Skywalker',
num_env: 2,
status: 'active',
role: 'developer'
}, {
name: 'Chewie',
num_env: 3,
status: 'pending',
role: 'admin'
}]
const role_choices = [
{ display_name: 'Developer', name: 'developer' },
{ display_name: 'Admin', name: 'admin' },
]
const status_choices = [
{ display_name: 'Active', name: 'active' },
{ display_name: 'Pending', name: 'pending' },
]
const createWrapper = () => shallowMount(MembersList, {
propsData: {
members, role_choices, status_choices
}
})
it('should sort by name by default', () => {
const wrapper = createWrapper()
const listedMembers = wrapper.vm.searchedList
const memberNames = listedMembers.map(member => member.name)
expect(memberNames).toEqual(['Chewie', 'Luke Skywalker'])
})
it('should reverse sort by name when updated with Name', () => {
const wrapper = createWrapper()
wrapper.vm.updateSort('Name')
const listedMembers = wrapper.vm.searchedList
const memberNames = listedMembers.map(member => member.name)
expect(memberNames).toEqual(['Luke Skywalker', 'Chewie'])
})
it('should sort by number of environments when environments selected', () => {
const wrapper = createWrapper()
wrapper.vm.updateSort('Environments')
const listedMembers = wrapper.vm.searchedList
const memberNames = listedMembers.map(member => member.name)
expect(memberNames).toEqual(['Luke Skywalker', 'Chewie'])
})
})

View File

@ -90,6 +90,8 @@ export default {
}, },
] ]
const defaultSortColumn = 'Name'
return { return {
searchValue: '', searchValue: '',
status: '', status: '',
@ -97,7 +99,7 @@ export default {
role: '', role: '',
rolesByDisplayName: indexBy(prop('display_name'), this.role_choices), rolesByDisplayName: indexBy(prop('display_name'), this.role_choices),
sortInfo: { sortInfo: {
columnName: '', columnName: defaultSortColumn,
isAscending: true, isAscending: true,
columns: indexBy(prop('displayName'), columns) columns: indexBy(prop('displayName'), columns)
}, },
@ -127,5 +129,7 @@ export default {
getColumns: function() { getColumns: function() {
return Object.values(this.sortInfo.columns) return Object.values(this.sortInfo.columns)
} }
} },
template: '<div></div>'
} }