fix: 使用 NScrollbar 统一内容区滚动条
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { computed, ref } from 'vue'
|
||||
import { NScrollbar } from 'naive-ui'
|
||||
import { createMemoryHistory, createRouter } from 'vue-router'
|
||||
import { flushPromises, mount, type VueWrapper } from '@vue/test-utils'
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
@@ -142,6 +143,45 @@ afterEach(() => {
|
||||
})
|
||||
|
||||
describe('内容级滚动下的生产反馈', () => {
|
||||
it('生产目录和资产详情由两个独立 NScrollbar 接管,切镜头不会新增生产请求', async () => {
|
||||
const fetcher = vi.fn<typeof fetch>().mockImplementation(async url => {
|
||||
const path = String(url)
|
||||
if (path.includes('/storyboard-directions')) return jsonResponse(directionsResult(fixture.id))
|
||||
if (path.includes('/readiness') || path.endsWith('/videos/status'))
|
||||
return jsonResponse({
|
||||
total: 2,
|
||||
ready: 0,
|
||||
skipped: 0,
|
||||
blocked: 0,
|
||||
completed: 0,
|
||||
queued: 0,
|
||||
pending: 0,
|
||||
running: 0,
|
||||
failed: 0,
|
||||
cancelled: 0,
|
||||
notStarted: 2,
|
||||
items: []
|
||||
})
|
||||
return jsonResponse([])
|
||||
})
|
||||
vi.stubGlobal('fetch', fetcher)
|
||||
wrapper = mount(ProductionPage, {
|
||||
attachTo: document.body,
|
||||
global: { provide: { [projectContextKey as symbol]: context() }, stubs: { RouterLink: true } }
|
||||
})
|
||||
await flushPromises()
|
||||
const directory = wrapper.get('.production-shot-list')
|
||||
const detail = wrapper.get('.production-detail')
|
||||
expect(directory.getComponent(NScrollbar).props('xScrollable')).toBe(true)
|
||||
expect(detail.get('.panel-scroll').classes()).toContain('n-scrollbar')
|
||||
expect(directory.get('.n-scrollbar-container').element).not.toBe(detail.get('.n-scrollbar-container').element)
|
||||
const items = directory.findAll('.production-shot-link')
|
||||
expect(items).toHaveLength(2)
|
||||
await items[1]!.trigger('click')
|
||||
await flushPromises()
|
||||
expect(items[1]!.attributes('aria-current')).toBe('true')
|
||||
expect(fetcher.mock.calls.every(([, init]) => init?.method === 'GET')).toBe(true)
|
||||
})
|
||||
it('默认折叠总览时查询错误仍显示在内容区外层', async () => {
|
||||
vi.stubGlobal('fetch', vi.fn<typeof fetch>().mockRejectedValue(new Error('生产连接中断')))
|
||||
wrapper = mount(ProductionPage, {
|
||||
|
||||
Reference in New Issue
Block a user