Merge pull request #1 from jakemcdermott/2557-copy

update copy tests
This commit is contained in:
Jake McDermott 2018-07-20 10:37:34 -04:00 committed by GitHub
commit 70174a2d1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 192 additions and 18 deletions

View File

@ -57,6 +57,18 @@ const getInventory = (namespace = session) => getOrganization(namespace)
variables: JSON.stringify({ ansible_connection: 'local' }),
}, ['name', 'inventory']).then(() => inventory)));
const getInventoryNoSource = (namespace = session) => getOrganization(namespace)
.then(organization => getOrCreate('/inventories/', {
name: `${namespace}-inventory-nosource`,
description: namespace,
organization: organization.id
}).then(inventory => getOrCreate('/hosts/', {
name: `${namespace}-host`,
description: namespace,
inventory: inventory.id,
variables: JSON.stringify({ ansible_connection: 'local' }),
}, ['name', 'inventory']).then(() => inventory)));
const getHost = (namespace = session) => getInventory(namespace)
.then(inventory => getOrCreate('/hosts/', {
name: `${namespace}-host`,
@ -365,6 +377,7 @@ module.exports = {
getAuditor,
getHost,
getInventory,
getInventoryNoSource,
getInventoryScript,
getInventorySource,
getInventorySourceSchedule,

View File

@ -38,6 +38,24 @@ module.exports = {
credentials.waitForElementVisible('div.spinny');
credentials.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
credentials.waitForElementNotPresent(toast);
credentials.expect.element(activityStream).visible;
credentials.expect.element(activityStream).enabled;
credentials.click(activityStream);
credentials.waitForElementVisible('div.spinny');
credentials.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
credentials.waitForElementVisible('div.spinny');
credentials.waitForElementNotVisible('div.spinny');
credentials.expect.element('div[ui-view="edit"] form').visible;
credentials.section.edit.expect.element('@title').visible;
credentials.section.edit.expect.element('@title').text.contain(data.credential.name);

View File

@ -1,12 +1,19 @@
import { getInventory } from '../fixtures';
import { getInventory, getInventoryNoSource } from '../fixtures';
const data = {};
let data;
module.exports = {
before: (client, done) => {
getInventory('test-actions')
.then(obj => { data.inventory = obj; })
.then(done);
const resources = [
getInventory('test-actions'),
getInventoryNoSource('test-actions'),
];
Promise.all(resources)
.then(([inventory, inventoryNoSource]) => {
data = { inventory, inventoryNoSource };
done();
});
},
'copy inventory': client => {
const inventories = client.page.inventories();
@ -23,6 +30,63 @@ module.exports = {
inventories.section.list.expect.element('smart-search').visible;
inventories.section.list.section.search.expect.element('@input').enabled;
inventories.section.list.section.search
.sendKeys('@input', `id:>${data.inventoryNoSource.id - 1} id:<${data.inventoryNoSource.id + 1}`)
.sendKeys('@input', client.Keys.ENTER);
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
inventories.expect.element(`#inventories_table tr[id="${data.inventoryNoSource.id}"]`).visible;
inventories.expect.element('i[class*="copy"]').visible;
inventories.expect.element('i[class*="copy"]').enabled;
inventories.click('i[class*="copy"]');
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
inventories.waitForElementNotPresent(toast);
inventories.expect.element(activityStream).visible;
inventories.expect.element(activityStream).enabled;
inventories.click(activityStream);
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
inventories.expect.element('#inventory_form').visible;
inventories.section.editStandardInventory.expect.element('@title').visible;
inventories.section.editStandardInventory.expect.element('@title').text.contain(data.inventoryNoSource.name);
inventories.section.editStandardInventory.expect.element('@title').text.not.equal(data.inventoryNoSource.name);
inventories.expect.element('@save').visible;
inventories.expect.element('@save').enabled;
client.end();
},
'verify inventories with sources cannot be copied': client => {
const inventories = client.page.inventories();
client.useCss();
client.resizeWindow(1200, 800);
client.login();
client.waitForAngular();
inventories.load();
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
inventories.section.list.expect.element('smart-search').visible;
inventories.section.list.section.search.expect.element('@input').enabled;
inventories.section.list.section.search
.sendKeys('@input', `id:>${data.inventory.id - 1} id:<${data.inventory.id + 1}`)
.sendKeys('@input', client.Keys.ENTER);
@ -31,19 +95,8 @@ module.exports = {
inventories.waitForElementNotVisible('div.spinny');
inventories.expect.element(`#inventories_table tr[id="${data.inventory.id}"]`).visible;
inventories.expect.element('i[class*="copy"]').visible;
inventories.expect.element('i[class*="copy"]').enabled;
inventories.click('i[class*="copy"]');
inventories.waitForElementVisible('div.spinny');
inventories.waitForElementNotVisible('div.spinny');
inventories.expect.element('#inventory_form').visible;
inventories.section.editStandardInventory.expect.element('@title').visible;
inventories.section.editStandardInventory.expect.element('@title').text.contain(data.inventory.name);
inventories.section.editStandardInventory.expect.element('@title').text.not.equal(data.inventory.name);
inventories.expect.element('@save').visible;
inventories.expect.element('@save').enabled;
inventories.expect.element('#copy-action').visible;
inventories.expect.element('#copy-action[class$="btn-disabled"]').present;
client.end();
}

View File

@ -38,6 +38,24 @@ module.exports = {
inventoryScripts.waitForElementVisible('div.spinny');
inventoryScripts.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
inventoryScripts.waitForElementNotPresent(toast);
inventoryScripts.expect.element(activityStream).visible;
inventoryScripts.expect.element(activityStream).enabled;
inventoryScripts.click(activityStream);
inventoryScripts.waitForElementVisible('div.spinny');
inventoryScripts.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
inventoryScripts.waitForElementVisible('div.spinny');
inventoryScripts.waitForElementNotVisible('div.spinny');
inventoryScripts.expect.element('#inventory_script_form').visible;
inventoryScripts.section.edit.expect.element('@title').visible;
inventoryScripts.section.edit.expect.element('@title').text.contain(data.inventoryScript.name);

View File

@ -38,6 +38,24 @@ module.exports = {
notifications.waitForElementVisible('div.spinny');
notifications.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
notifications.waitForElementNotPresent(toast);
notifications.expect.element(activityStream).visible;
notifications.expect.element(activityStream).enabled;
notifications.click(activityStream);
notifications.waitForElementVisible('div.spinny');
notifications.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
notifications.waitForElementVisible('div.spinny');
notifications.waitForElementNotVisible('div.spinny');
notifications.expect.element('#notification_template_form').visible;
notifications.section.edit.expect.element('@title').visible;
notifications.section.edit.expect.element('@title').text.contain(data.notification.name);

View File

@ -39,6 +39,24 @@ module.exports = {
projects.waitForElementVisible('div.spinny');
projects.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
projects.waitForElementNotPresent(toast);
projects.expect.element(activityStream).visible;
projects.expect.element(activityStream).enabled;
projects.click(activityStream);
projects.waitForElementVisible('div.spinny');
projects.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
projects.waitForElementVisible('div.spinny');
projects.waitForElementNotVisible('div.spinny');
projects.expect.element('#project_form').visible;
projects.section.edit.expect.element('@title').visible;
projects.section.edit.expect.element('@title').text.contain(data.project.name);

View File

@ -53,6 +53,24 @@ module.exports = {
templates.waitForElementVisible('div.spinny');
templates.waitForElementNotVisible('div.spinny');
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
templates.waitForElementNotPresent(toast);
templates.expect.element(activityStream).visible;
templates.expect.element(activityStream).enabled;
templates.click(activityStream);
templates.waitForElementVisible('div.spinny');
templates.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
templates.waitForElementVisible('div.spinny');
templates.waitForElementNotVisible('div.spinny');
templates.expect.element('#job_template_form').visible;
templates.section.addJobTemplate.expect.element('@title').visible;
templates.section.addJobTemplate.expect.element('@title').text.contain(data.template.name);
@ -95,6 +113,24 @@ module.exports = {
.waitForElementNotVisible('div.spinny')
.waitForAngular();
const activityStream = 'bread-crumb > div i[class$="icon-activity-stream"]';
const activityRow = '#activities_table tr td[class*="description-column"] a';
const toast = 'div[class="Toast-icon"]';
templates.waitForElementNotPresent(toast);
templates.expect.element(activityStream).visible;
templates.expect.element(activityStream).enabled;
templates.click(activityStream);
templates.waitForElementVisible('div.spinny');
templates.waitForElementNotVisible('div.spinny');
client
.waitForElementVisible(activityRow)
.click(activityRow);
templates.waitForElementVisible('div.spinny');
templates.waitForElementNotVisible('div.spinny');
templates.expect.element('#workflow_job_template_form').visible;
templates.section.editWorkflowJobTemplate.expect.element('@title').visible;
templates.section.editWorkflowJobTemplate.expect.element('@title').text.contain(data.workflow.name);