|
|
@@ -27,4 +27,26 @@ describe('Global config', () => {
|
|
|
Vue.config.errorHandler = null
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
+ describe('optionMergeStrategies', () => {
|
|
|
+ it('should allow defining custom option merging strategies', () => {
|
|
|
+ const spy = jasmine.createSpy('option merging')
|
|
|
+ Vue.config.optionMergeStrategies.__test__ = (parent, child, vm) => {
|
|
|
+ spy(parent, child, vm)
|
|
|
+ return child + 1
|
|
|
+ }
|
|
|
+ const Test = Vue.extend({
|
|
|
+ __test__: 1
|
|
|
+ })
|
|
|
+ expect(spy.calls.count()).toBe(1)
|
|
|
+ expect(spy).toHaveBeenCalledWith(undefined, 1, undefined)
|
|
|
+ expect(Test.options.__test__).toBe(2)
|
|
|
+ const test = new Test({
|
|
|
+ __test__: 2
|
|
|
+ })
|
|
|
+ expect(spy.calls.count()).toBe(2)
|
|
|
+ expect(spy).toHaveBeenCalledWith(2, 2, test)
|
|
|
+ expect(test.$options.__test__).toBe(3)
|
|
|
+ })
|
|
|
+ })
|
|
|
})
|