blob: b431e7bfaf01d00313e08632aab02c6e4dc0d2a3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {dropTestDB, insertTestUser, resolveUrl} from '../../environment/envtools';
import {createRegularUser} from '../../roles';
import {PageConfigurationBasic} from '../../page-models/PageConfigurationBasic';
import {successNotification} from '../../components/notifications';
const regularUser = createRegularUser();
fixture('Basic configuration')
.before(async() => {
await dropTestDB();
await insertTestUser();
})
.beforeEach(async(t) => {
await t
.useRole(regularUser)
.navigateTo(resolveUrl('/configuration/new/basic'));
})
.after(dropTestDB);
test('Off-heap size visibility for different Ignite versions', async(t) => {
const page = new PageConfigurationBasic();
const ignite2 = 'Ignite 2.4';
const ignite1 = 'Ignite 1.x';
await page.versionPicker.pickVersion(ignite2);
await t.expect(page.totalOffheapSizeInput.exists).ok('Visible in latest 2.x version');
await page.versionPicker.pickVersion(ignite1);
await t.expect(page.totalOffheapSizeInput.count).eql(0, 'Invisible in Ignite 1.x');
});
test('Default form action', async(t) => {
const page = new PageConfigurationBasic();
await t
.expect(page.mainFormAction.textContent)
.eql(PageConfigurationBasic.SAVE_CHANGES_AND_DOWNLOAD_LABEL);
});
test('Basic editing', async(t) => {
const page = new PageConfigurationBasic();
const clusterName = 'Test basic cluster #1';
const localMode = 'LOCAL';
const atomic = 'ATOMIC';
await t
.expect(page.buttonPreviewProject.visible).notOk('Preview project button is hidden for new cluster configs')
.typeText(page.clusterNameInput.control, clusterName, {replace: true});
await page.cachesList.addItem();
await page.cachesList.addItem();
await page.cachesList.addItem();
const cache1 = page.cachesList.getItem(1);
await cache1.startEdit();
await t.typeText(cache1.fields.name.control, 'Foobar');
await cache1.fields.cacheMode.selectOption(localMode);
await cache1.fields.atomicityMode.selectOption(atomic);
await cache1.stopEdit();
await t.expect(cache1.getItemViewColumn(0).textContent).contains(`Cache1Foobar`, 'Can edit cache name');
await t.expect(cache1.getItemViewColumn(1).textContent).eql(localMode, 'Can edit cache mode');
await t.expect(cache1.getItemViewColumn(2).textContent).eql(atomic, 'Can edit cache atomicity');
await page.save();
await t
.expect(successNotification.visible).ok('Shows success notifications')
.expect(successNotification.textContent).contains(`Cluster "${clusterName}" saved.`, 'Success notification has correct text', {timeout: 500});
await t.eval(() => window.location.reload());
await t.expect(page.pageHeader.textContent).contains(`Edit cluster configuration ${clusterName}’`);
});