127 lines
4.8 KiB
JavaScript
127 lines
4.8 KiB
JavaScript
|
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||
|
// See LICENSE.txt for license information.
|
||
|
'use strict';
|
||
|
|
||
|
const path = require('path');
|
||
|
|
||
|
const env = require('../../modules/environment');
|
||
|
const {asyncSleep, writeFileAsync} = require('../../modules/utils');
|
||
|
|
||
|
const config = env.demoConfig;
|
||
|
|
||
|
const downloads = {
|
||
|
'file1.txt': {
|
||
|
addedAt: Date.UTC(2022, 8, 8, 10), // Aug 08, 2022 10:00AM UTC
|
||
|
filename: 'file1.txt',
|
||
|
mimeType: 'plain/text',
|
||
|
location: path.join(env.downloadsLocation, 'file1.txt'),
|
||
|
progress: 100,
|
||
|
receivedBytes: 3917388,
|
||
|
state: 'completed',
|
||
|
totalBytes: 3917388,
|
||
|
type: 'file',
|
||
|
},
|
||
|
};
|
||
|
|
||
|
describe('downloads/downloads_menubar', function desc() {
|
||
|
this.timeout(30000);
|
||
|
|
||
|
describe('The download list is empty', () => {
|
||
|
beforeEach(async () => {
|
||
|
await env.createTestUserDataDirAsync();
|
||
|
await env.cleanTestConfigAsync();
|
||
|
await writeFileAsync(env.configFilePath, JSON.stringify(config));
|
||
|
await writeFileAsync(env.downloadsFilePath, JSON.stringify({}));
|
||
|
await asyncSleep(1000);
|
||
|
this.app = await env.getApp();
|
||
|
});
|
||
|
|
||
|
afterEach(async () => {
|
||
|
await this.app?.close?.();
|
||
|
await env.clearElectronInstances();
|
||
|
});
|
||
|
|
||
|
it('MM-22239 should not show the downloads dropdown and the menu item should be disabled', async () => {
|
||
|
const mainWindow = this.app.windows().find((window) => window.url().includes('index'));
|
||
|
await mainWindow.waitForLoadState();
|
||
|
await mainWindow.bringToFront();
|
||
|
|
||
|
const dlButton = mainWindow.locator('.DownloadsDropdownButton');
|
||
|
|
||
|
(await dlButton.isVisible()).should.equal(false);
|
||
|
|
||
|
const saveMenuItem = await this.app.evaluate(async ({app}) => {
|
||
|
const viewMenu = app.applicationMenu.getMenuItemById('view');
|
||
|
const saveItem = viewMenu.submenu.getMenuItemById('app-menu-downloads');
|
||
|
|
||
|
return saveItem;
|
||
|
});
|
||
|
|
||
|
saveMenuItem.should.haveOwnProperty('enabled', false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('The download list has one file', () => {
|
||
|
beforeEach(async () => {
|
||
|
await env.createTestUserDataDirAsync();
|
||
|
await env.cleanTestConfigAsync();
|
||
|
await writeFileAsync(env.configFilePath, JSON.stringify(config));
|
||
|
await writeFileAsync(env.downloadsFilePath, JSON.stringify(downloads));
|
||
|
await asyncSleep(1000);
|
||
|
this.app = await env.getApp();
|
||
|
});
|
||
|
|
||
|
afterEach(async () => {
|
||
|
await this.app?.close?.();
|
||
|
await env.clearElectronInstances();
|
||
|
});
|
||
|
|
||
|
it('MM-22239 should show the downloads dropdown button and the menu item should be enabled', async () => {
|
||
|
const mainWindow = this.app.windows().find((window) => window.url().includes('index'));
|
||
|
await mainWindow.waitForLoadState();
|
||
|
await mainWindow.bringToFront();
|
||
|
|
||
|
const dlButton = await mainWindow.waitForSelector('.DownloadsDropdownButton', {state: 'attached'});
|
||
|
(await dlButton.isVisible()).should.equal(true);
|
||
|
|
||
|
const saveMenuItem = await this.app.evaluate(async ({app}) => {
|
||
|
const viewMenu = app.applicationMenu.getMenuItemById('view');
|
||
|
const saveItem = viewMenu.submenu.getMenuItemById('app-menu-downloads');
|
||
|
|
||
|
return saveItem;
|
||
|
});
|
||
|
|
||
|
saveMenuItem.should.haveOwnProperty('enabled', true);
|
||
|
});
|
||
|
|
||
|
it('MM-22239 should open the downloads dropdown when clicking the download button in the menubar', async () => {
|
||
|
const mainWindow = this.app.windows().find((window) => window.url().includes('index'));
|
||
|
await mainWindow.waitForLoadState();
|
||
|
await mainWindow.bringToFront();
|
||
|
|
||
|
const dlButton = await mainWindow.waitForSelector('.DownloadsDropdownButton', {state: 'attached'});
|
||
|
(await dlButton.isVisible()).should.equal(true);
|
||
|
await dlButton.click();
|
||
|
|
||
|
await asyncSleep(500);
|
||
|
(await env.downloadsDropdownIsOpen(this.app)).should.equal(true);
|
||
|
});
|
||
|
|
||
|
it('MM-22239 should open the downloads dropdown from the app menu', async () => {
|
||
|
const mainWindow = this.app.windows().find((window) => window.url().includes('index'));
|
||
|
await mainWindow.waitForLoadState();
|
||
|
await mainWindow.bringToFront();
|
||
|
|
||
|
await this.app.evaluate(async ({app}) => {
|
||
|
const viewMenu = app.applicationMenu.getMenuItemById('view');
|
||
|
const downloadsItem = viewMenu.submenu.getMenuItemById('app-menu-downloads');
|
||
|
|
||
|
downloadsItem.click();
|
||
|
});
|
||
|
|
||
|
await asyncSleep(500);
|
||
|
(await env.downloadsDropdownIsOpen(this.app)).should.equal(true);
|
||
|
});
|
||
|
});
|
||
|
});
|