kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			
		
			
				
	
	
		
			78 wiersze
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			78 wiersze
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
| // helper for testing action with expected mutations
 | |
| import Vue from 'vue'
 | |
| import {expect} from 'chai'
 | |
| 
 | |
| 
 | |
| export const render = (Component, propsData) => {
 | |
|   const Constructor = Vue.extend(Component)
 | |
|   return new Constructor({ propsData: propsData }).$mount()
 | |
| }
 | |
| 
 | |
| export const testAction = ({action, payload, params, expectedMutations, expectedActions}, done) => {
 | |
|   let mutationsCount = 0
 | |
|   let actionsCount = 0
 | |
| 
 | |
|   if (!expectedMutations) {
 | |
|     expectedMutations = []
 | |
|   }
 | |
|   if (!expectedActions) {
 | |
|     expectedActions = []
 | |
|   }
 | |
|   const isOver = () => {
 | |
|     return mutationsCount >= expectedMutations.length && actionsCount >= expectedActions.length
 | |
|   }
 | |
|   // mock commit
 | |
|   const commit = (type, payload) => {
 | |
|     const mutation = expectedMutations[mutationsCount]
 | |
| 
 | |
|     expect(mutation.type).to.equal(type)
 | |
|     if (payload) {
 | |
|       expect(mutation.payload).to.deep.equal(payload)
 | |
|     }
 | |
| 
 | |
|     mutationsCount++
 | |
|     if (isOver()) {
 | |
|       return
 | |
|     }
 | |
|   }
 | |
|   // mock dispatch
 | |
|   const dispatch = (type, payload, options) => {
 | |
|     const a = expectedActions[actionsCount]
 | |
|     if (!a) {
 | |
|       throw Error(`Unexecpted action ${type}`)
 | |
|     }
 | |
|     expect(a.type).to.equal(type)
 | |
|     if (payload) {
 | |
|       expect(a.payload).to.deep.equal(payload)
 | |
|     }
 | |
|     if (a.options) {
 | |
|       expect(options).to.deep.equal(a.options)
 | |
|     }
 | |
|     actionsCount++
 | |
|     if (isOver()) {
 | |
|       return
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   let end = function () {
 | |
|     // check if no mutations should have been dispatched
 | |
|     if (expectedMutations.length === 0) {
 | |
|       expect(mutationsCount).to.equal(0)
 | |
|     }
 | |
|     if (expectedActions.length === 0) {
 | |
|       expect(actionsCount).to.equal(0)
 | |
|     }
 | |
|     if (isOver()) {
 | |
|       return
 | |
|     }
 | |
|   }
 | |
|   // call the action with mocked store and arguments
 | |
|   let promise = action({ commit, dispatch, ...params }, payload)
 | |
|   if (promise) {
 | |
|     promise.then(end)
 | |
|     return promise
 | |
|   } else {
 | |
|     return end()
 | |
|   }
 | |
| }
 |