kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
Store for fetching user playlists
rodzic
15300e255c
commit
a34b1afd6c
|
@ -91,6 +91,7 @@ export default {
|
|||
commit('profile', data)
|
||||
commit('username', data.username)
|
||||
dispatch('favorites/fetch', null, {root: true})
|
||||
dispatch('playlists/fetchOwn', null, {root: true})
|
||||
Object.keys(data.permissions).forEach(function (key) {
|
||||
// this makes it easier to check for permissions in templates
|
||||
commit('permission', {key, status: data.permissions[String(key)].status})
|
||||
|
|
|
@ -8,6 +8,7 @@ import instance from './instance'
|
|||
import queue from './queue'
|
||||
import radios from './radios'
|
||||
import player from './player'
|
||||
import playlists from './playlists'
|
||||
import ui from './ui'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
@ -20,6 +21,7 @@ export default new Vuex.Store({
|
|||
instance,
|
||||
queue,
|
||||
radios,
|
||||
playlists,
|
||||
player
|
||||
},
|
||||
plugins: [
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: {
|
||||
playlists: []
|
||||
},
|
||||
mutations: {
|
||||
playlists (state, value) {
|
||||
state.playlists = value
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
fetchOwn ({commit, rootState}) {
|
||||
let userId = rootState.auth.profile.id
|
||||
if (!userId) {
|
||||
return
|
||||
}
|
||||
return axios.get('playlists/', {params: {user: userId}}).then((response) => {
|
||||
commit('playlists', response.data.results)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
|
@ -180,7 +180,8 @@ describe('store/auth', () => {
|
|||
{ type: 'permission', payload: {key: 'admin', status: true} }
|
||||
],
|
||||
expectedActions: [
|
||||
{ type: 'favorites/fetch', payload: null, options: {root: true} }
|
||||
{ type: 'favorites/fetch', payload: null, options: {root: true} },
|
||||
{ type: 'playlists/fetchOwn', payload: null, options: {root: true} },
|
||||
]
|
||||
}, done)
|
||||
})
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
var sinon = require('sinon')
|
||||
import moxios from 'moxios'
|
||||
import store from '@/store/playlists'
|
||||
|
||||
import { testAction } from '../../utils'
|
||||
|
||||
describe('store/playlists', () => {
|
||||
var sandbox
|
||||
|
||||
beforeEach(function () {
|
||||
sandbox = sinon.sandbox.create()
|
||||
moxios.install()
|
||||
})
|
||||
afterEach(function () {
|
||||
sandbox.restore()
|
||||
moxios.uninstall()
|
||||
})
|
||||
|
||||
describe('mutations', () => {
|
||||
it('set playlists', () => {
|
||||
const state = { playlists: [] }
|
||||
store.mutations.playlists(state, [{id: 1, name: 'test'}])
|
||||
expect(state.playlists).to.deep.equal([{id: 1, name: 'test'}])
|
||||
})
|
||||
})
|
||||
describe('actions', () => {
|
||||
it('fetchOwn does nothing with no user', (done) => {
|
||||
testAction({
|
||||
action: store.actions.fetchOwn,
|
||||
payload: null,
|
||||
params: {state: { playlists: [] }, rootState: {auth: {profile: {}}}},
|
||||
expectedMutations: []
|
||||
}, done)
|
||||
})
|
||||
})
|
||||
})
|
Ładowanie…
Reference in New Issue