From b1ea9208c2b3f7d74f8cb5f2faac63eece34dce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Sun, 17 May 2026 15:32:00 +0300 Subject: [PATCH] =?UTF-8?q?feat(deals):=20DealsBulkBar=20=E2=80=94=20statu?= =?UTF-8?q?s-change=20only=20(drop=20export/delete/trash)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/components/deals/DealsBulkBar.vue | 111 +++++------------- app/tests/Frontend/DealsBulkBar.spec.ts | 48 ++++++++ 2 files changed, 80 insertions(+), 79 deletions(-) create mode 100644 app/tests/Frontend/DealsBulkBar.spec.ts diff --git a/app/resources/js/components/deals/DealsBulkBar.vue b/app/resources/js/components/deals/DealsBulkBar.vue index 35a0a871..bec5b345 100644 --- a/app/resources/js/components/deals/DealsBulkBar.vue +++ b/app/resources/js/components/deals/DealsBulkBar.vue @@ -1,20 +1,13 @@ @@ -39,73 +29,38 @@ defineEmits<{ data-testid="bulk-bar" >
- - Выбрано {{ selectedCount }} - + Выбрано {{ selectedCount }} - - - Восстановить - - + + + + + {{ s.nameRu }} + + + { + it('скрыт при selectedCount=0', () => { + const w = mount(DealsBulkBar, { + props: { selectedCount: 0, statusMenuOpen: false, leadStatuses }, + global: { plugins: [vuetify] }, + }); + expect(w.find('[data-testid="bulk-bar"]').exists()).toBe(false); + }); + + it('виден при selectedCount>0 и показывает количество', () => { + const w = mount(DealsBulkBar, { + props: { selectedCount: 3, statusMenuOpen: false, leadStatuses }, + global: { plugins: [vuetify] }, + }); + const bar = w.find('[data-testid="bulk-bar"]'); + expect(bar.exists()).toBe(true); + expect(bar.text()).toContain('3'); + }); + + it('НЕ содержит кнопок Экспорт/Удалить', () => { + const w = mount(DealsBulkBar, { + props: { selectedCount: 2, statusMenuOpen: false, leadStatuses }, + global: { plugins: [vuetify] }, + }); + expect(w.find('[data-testid="bulk-export-btn"]').exists()).toBe(false); + expect(w.find('[data-testid="bulk-delete-btn"]').exists()).toBe(false); + }); + + it('✕ эмитит clear-selected', async () => { + const w = mount(DealsBulkBar, { + props: { selectedCount: 2, statusMenuOpen: false, leadStatuses }, + global: { plugins: [vuetify] }, + }); + await w.find('[data-testid="bulk-clear-btn"]').trigger('click'); + expect(w.emitted('clear-selected')).toBeTruthy(); + }); +});