Skip to content

Commit

Permalink
implemented AddAndRemoveManyDataElementsSpec (#1261)
Browse files Browse the repository at this point in the history
  • Loading branch information
vijayshukla30 committed May 11, 2018
1 parent d0248a7 commit 9a2c25a
Show file tree
Hide file tree
Showing 5 changed files with 303 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import spock.lang.Issue
import spock.lang.Narrative
import spock.lang.Specification
import spock.lang.Title
import spock.lang.Stepwise
import org.modelcatalogue.core.geb.*

@Issue('https://metadata.atlassian.net/browse/MET-1564')
@Title('Examine that When remove more than one data element of a class the browser does not crash')
Expand All @@ -27,6 +29,268 @@ import spock.lang.Title
- 16. Repeat steps 11-14 to Delete a Data Element | Data Element is deleted
- 17. Repeat steps 15 and 16 five more times. | Check that Metadata Exchange does not crash when Data Elements are repeatedly created and deleted.
/$)

@Stepwise
class AddAndRemoveManyDataElementsSpec extends GebSpec {

def "login as curator"() {
when:
LoginPage loginPage = to LoginPage
loginPage.login('curator', 'curator')
then:
at DashboardPage
}

def "create new data model"() {
when:
DashboardPage dashboardPage = to DashboardPage
dashboardPage.nav.createDataModel()
then:
at CreateDataModelPage

when:
CreateDataModelPage createDataModelPage = to CreateDataModelPage
createDataModelPage.name = "TESTING_MODEL"
createDataModelPage.modelCatalogueIdInput = UUID.randomUUID().toString()
createDataModelPage.description = "TESTING_MODEL_DESCRIPTION"
createDataModelPage.submit()
then:
at DataModelPage
}

def "create first data element and then delete it"() {
when:
DataModelPage dataModelPage = browser.page DataModelPage
dataModelPage.treeView.dataElements()
then:
at DataElementsPage

when:
DataElementsPage dataElementsPage = browser.page DataElementsPage
dataElementsPage.createDataElement()
then:
at CreateDataElementPage

when:
CreateDataElementPage createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.name = "TESTING_ELEMENT_ONE"
createDataElementPage.modelCatalogueId = UUID.randomUUID().toString()
createDataElementPage.description = "ELEMENT_ONE_DESCRIPTION"
createDataElementPage.search("TESTING_DATATYPE_ONE")
createDataElementPage.createNewDataType()
then:
at CreateDataTypePage

when:
CreateDataTypePage createDataTypePage = browser.page CreateDataTypePage
createDataTypePage.description = "DATATYPE_ONE_DESCRIPTION"
createDataTypePage.modelCatalogueId = UUID.randomUUID().toString()
createDataTypePage.buttons.save()
then:
at CreateDataElementPage

when:
createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.finish()
then:
at DataElementsPage

when:
dataElementsPage = browser.page DataElementsPage
dataElementsPage.selectDataElement("TESTING_ELEMENT_ONE")
then:
at DataElementPage

when:
DataElementPage dataElementPage = browser.page DataElementPage
dataElementPage.dataElementDropdown()
dataElementPage.deleteDataElement()
dataElementPage.confirmDelete()
then:
at DataElementsPage
}

def "create second data element and then delete it"() {
when:
DataElementsPage dataElementsPage = browser.page DataElementsPage
dataElementsPage.createDataElement()
then:
at CreateDataElementPage

when:
CreateDataElementPage createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.name = "TESTING_ELEMENT_TWO"
createDataElementPage.modelCatalogueId = UUID.randomUUID().toString()
createDataElementPage.description = "ELEMENT_TWO_DESCRIPTION"
createDataElementPage.search("TESTING_DATATYPE_TWO")
createDataElementPage.createNewDataType()
then:
at CreateDataTypePage

when:
CreateDataTypePage createDataTypePage = browser.page CreateDataTypePage
createDataTypePage.description = "DATATYPE_TWO_DESCRIPTION"
createDataTypePage.modelCatalogueId = UUID.randomUUID().toString()
createDataTypePage.buttons.save()
then:
at CreateDataElementPage

when:
createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.finish()
then:
at DataElementsPage

when:
dataElementsPage = browser.page DataElementsPage
dataElementsPage.selectDataElement("TESTING_ELEMENT_TWO")
then:
at DataElementPage

when:
DataElementPage dataElementPage = browser.page DataElementPage
dataElementPage.dataElementDropdown()
dataElementPage.deleteDataElement()
dataElementPage.confirmDelete()
then:
at DataElementsPage
}

def "create third data element and then delete it"() {
when:
DataElementsPage dataElementsPage = browser.page DataElementsPage
dataElementsPage.createDataElement()
then:
at CreateDataElementPage

when:
CreateDataElementPage createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.name = "TESTING_ELEMENT_THREE"
createDataElementPage.modelCatalogueId = UUID.randomUUID().toString()
createDataElementPage.description = "ELEMENT_THREE_DESCRIPTION"
createDataElementPage.search("TESTING_DATATYPE_THREE")
createDataElementPage.createNewDataType()
then:
at CreateDataTypePage

when:
CreateDataTypePage createDataTypePage = browser.page CreateDataTypePage
createDataTypePage.description = "DATATYPE_THREE_DESCRIPTION"
createDataTypePage.modelCatalogueId = UUID.randomUUID().toString()
createDataTypePage.buttons.save()
then:
at CreateDataElementPage

when:
createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.finish()
then:
at DataElementsPage

when:
dataElementsPage = browser.page DataElementsPage
dataElementsPage.selectDataElement("TESTING_ELEMENT_THREE")
then:
at DataElementPage

when:
DataElementPage dataElementPage = browser.page DataElementPage
dataElementPage.dataElementDropdown()
dataElementPage.deleteDataElement()
dataElementPage.confirmDelete()
then:
at DataElementsPage
}

def "create fourth data element and then delete it"() {
when:
DataElementsPage dataElementsPage = browser.page DataElementsPage
dataElementsPage.createDataElement()
then:
at CreateDataElementPage

when:
CreateDataElementPage createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.name = "TESTING_ELEMENT_FOUR"
createDataElementPage.modelCatalogueId = UUID.randomUUID().toString()
createDataElementPage.description = "ELEMENT_FOUR_DESCRIPTION"
createDataElementPage.search("TESTING_DATATYPE_FOUR")
createDataElementPage.createNewDataType()
then:
at CreateDataTypePage

when:
CreateDataTypePage createDataTypePage = browser.page CreateDataTypePage
createDataTypePage.description = "DATATYPE_FOUR_DESCRIPTION"
createDataTypePage.modelCatalogueId = UUID.randomUUID().toString()
createDataTypePage.buttons.save()
then:
at CreateDataElementPage

when:
createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.finish()
then:
at DataElementsPage

when:
dataElementsPage = browser.page DataElementsPage
dataElementsPage.selectDataElement("TESTING_ELEMENT_FOUR")
then:
at DataElementPage

when:
DataElementPage dataElementPage = browser.page DataElementPage
dataElementPage.dataElementDropdown()
dataElementPage.deleteDataElement()
dataElementPage.confirmDelete()
then:
at DataElementsPage
}

def "create fifth data element and then delete it"() {
when:
DataElementsPage dataElementsPage = browser.page DataElementsPage
dataElementsPage.createDataElement()
then:
at CreateDataElementPage

when:
CreateDataElementPage createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.name = "TESTING_ELEMENT_FIVE"
createDataElementPage.modelCatalogueId = UUID.randomUUID().toString()
createDataElementPage.description = "ELEMENT_FIVE_DESCRIPTION"
createDataElementPage.search("TESTING_DATATYPE_FIVE")
createDataElementPage.createNewDataType()
then:
at CreateDataTypePage

when:
CreateDataTypePage createDataTypePage = browser.page CreateDataTypePage
createDataTypePage.description = "DATATYPE_FIVE_DESCRIPTION"
createDataTypePage.modelCatalogueId = UUID.randomUUID().toString()
createDataTypePage.buttons.save()
then:
at CreateDataElementPage

when:
createDataElementPage = browser.page CreateDataElementPage
createDataElementPage.finish()
then:
at DataElementsPage

when:
dataElementsPage = browser.page DataElementsPage
dataElementsPage.selectDataElement("TESTING_ELEMENT_FIVE")
then:
at DataElementPage

when:
DataElementPage dataElementPage = browser.page DataElementPage
dataElementPage.dataElementDropdown()
dataElementPage.deleteDataElement()
dataElementPage.confirmDelete()
then:
at DataElementsPage
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.modelcatalogue.core.geb
import geb.Page

class CreateDataElementPage extends Page implements InputUtils {
static at = { $('.modal-dialog').text().contains('Create Data Element') }
static at = { $('.modal-dialog', 0).text().contains('Create Data Element') }

static content = {
nameInput { $('#name', 0) }
Expand All @@ -13,6 +13,7 @@ class CreateDataElementPage extends Page implements InputUtils {
searchLink(wait: true) { $("", 0) }
searchDataType(wait: true) { $("input#dataType") }
selectItem(wait: true) { $("a.cep-item", 0) }
createNewDataTypeLink(required: false, wait: true) { $('a.create-new-cep-item', 0) }
}

void setName(String value) {
Expand All @@ -21,6 +22,7 @@ class CreateDataElementPage extends Page implements InputUtils {

void search(String value) {
fillInput(searchDataType, value)
waitFor { createNewDataTypeLink }
}

void setDescription(String value) {
Expand All @@ -37,5 +39,10 @@ class CreateDataElementPage extends Page implements InputUtils {

void finish() {
submitButton.click()
sleep(2000)
}

void createNewDataType() {
createNewDataTypeLink.click()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import geb.module.RadioButtons

class CreateDataTypePage extends Page {

static at = { $('.modal-dialog').text().contains('Create Data Type') }
static at = { $('.modal-dialog', 0).text().contains('Create Data Type') }

static content = {
nameInput { $('input#name', 0) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import geb.Page
class DataElementPage extends Page {

static url = '/#'
static at = { title.contains('of data element') }
static at = { dataElementDropdown.displayed }

@Override
String convertToPath(Object[] args) {
Expand All @@ -14,10 +14,15 @@ class DataElementPage extends Page {

static content = {
editButton(required: false) { $("a#role_item-detail_inline-editBtn", 0) }
submitButton(required: false) {$("button#role_item-detail_inline-edit-submitBtn", 0) }
descriptionTextarea(required: false) { $("#metadataCurator > div.container-fluid.container-main > div > div > div.ng-scope > div > div.split-view-right.data-model-detail-pane > ui-view > ui-view > div > div > div > div > form > div:nth-child(4) > div > ng-include > div > div > span > div > textarea", 0)}
dataTypeInput(required: false) { $("input#dataType", 0) }
submitButton(required: false) { $("button#role_item-detail_inline-edit-submitBtn", 0) }
descriptionTextarea(required: false) {
$("#metadataCurator > div.container-fluid.container-main > div > div > div.ng-scope > div > div.split-view-right.data-model-detail-pane > ui-view > ui-view > div > div > div > div > form > div:nth-child(4) > div > ng-include > div > div > span > div > textarea", 0)
}
dataTypeInput(required: false) { $("input#dataType", 0) }
unitNameSpan(required: false) { $('span.unit-name', 0) }
dataElementDropdown { $('#role_item_catalogue-element-menu-item-link') }
deleteDataElementLink { $('#delete-menu-item-link') }
confirmDeleteButton(wait: true, required: false) { $('form button.btn-primary', text: "OK") }
}

String getUnitName() {
Expand Down Expand Up @@ -48,4 +53,16 @@ class DataElementPage extends Page {
submitButton.click()
}
}

void dataElementDropdown() {
dataElementDropdown.click()
}

void deleteDataElement() {
deleteDataElementLink.click()
}

void confirmDelete() {
waitFor { confirmDeleteButton.click() }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ class DataElementsPage extends Page {
createDateElementLink(required: false) { $('a#role_list_create-catalogue-element-menu-item-link', 0) }
anchorElements { $("td.col-md-4>span>span>a") }
treeView { $('div.data-model-treeview-pane', 0).module(DataModelTreeViewModule) }
addItemIcon(required: false) { $("div.inf-table-body>table>tfoot>tr>td>table>tfoot>tr>td.text-center>span.fa-plus-circle") }
addItemIcon(required: false) {
$("div.inf-table-body>table>tfoot>tr>td>table>tfoot>tr>td.text-center>span.fa-plus-circle")
}
firstRowLink { $('tbody.ng-scope>tr:nth-child(1)>td:nth-child(1)>span>span>a') }
rows { $('div.inf-table-body tbody tr') }
}

void createDataElement() {
Expand All @@ -39,4 +42,8 @@ class DataElementsPage extends Page {
String dataElementCreated() {
firstRowLink.text()
}

void selectDataElement(String value) {
rows.$('a', text: value).click()
}
}

0 comments on commit 9a2c25a

Please sign in to comment.