Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement CuratorCannotCreateClassInFinalizedModelSpec #1266

Merged
merged 8 commits into from
May 15, 2018
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ class CreateDataClassPage extends Page implements InputUtils, MetadataUtils {

void exit() {
exitButton.click()
sleep(2_000)

}

void setName(String value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class CreateDataModelPage extends Page implements InputUtils {
defaultTag { $("a.remove-tag") }
policiesInput { $("input#dataModelPolicy") }
policyTag { $("span.with-pointer.ng-binding") }
dataClasses { $('div.split-view-content').module(DataModelTreeViewModule) }
}

void submit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,20 @@ class DataClassesPage extends Page {

static content = {
createDateClassLink(required: false) { $('a#role_list_create-catalogue-element-menu-item-link', 0) }
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")
}
treeView { $('div.data-model-treeview-pane', 0).module(DataModelTreeViewModule) }
rows { $('div.inf-table-body tbody tr') }
titlename { $('div h3') }
}

int count() {
rows.size()
}

boolean isAddItemIconVisible() {
if ( addItemIcon.empty ) {
if (addItemIcon.empty) {
return false
}
true
Expand All @@ -34,4 +37,8 @@ class DataClassesPage extends Page {
void createDataClass() {
createDateClassLink.click()
}

String titleText() {
return titlename.text()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ class DataModelPage extends Page {
finalizedLink.click()
}

Boolean isFinalizedDataModelVisible() {
return finalizedLink?.displayed
}

void dropdown() {
dropdownLink.click()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import geb.Module
class DataModelTreeViewModule extends Module {

static content = {
dataModelLink { $('a.catalogue-element-treeview-icon') }
dataModelLink(wait: true) { int index -> $('a.catalogue-element-treeview-icon', index) }
item { $('ul .catalogue-element-treeview-name', text: it) }
}

void dataModel() {
dataModelLink.click()
dataModelLink(0).click()
}

void dataClasses() {
Expand Down Expand Up @@ -53,4 +53,8 @@ class DataModelTreeViewModule extends Module {
item(name).click()
sleep(2000)
}

Boolean checkItemDisplay(String name) {
return item(name)?.displayed
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.modelcatalogue.core.rolevisibility

import geb.spock.GebSpec
import spock.lang.Issue
import spock.lang.Narrative
import spock.lang.Specification
import spock.lang.Title

@Issue('https://metadata.atlassian.net/browse/MET-1620')
@Title('Examine that admin can remove an imported model')
@Narrative($/
- Login to Metadata Exchange As supervisor | Login successful
- Select the 'Create Data Model' button (plus sign) from the top -right hand menu | Redirected to 'Create Data Model' page
- Fill form with Name, Catalogue ID, Description and press Save button. | New Data Model is created. Redirected to the new Data Model's main page.
- Navigate via tree-view navigation panel and select "Imported Data Models" tag | Display panel opens up the 'Imported Data Model' page. Title is '[Data model name] Imports'
- Select the green plus sign button to import a data model. | Import data model dialogue pop-up box appears. Title is [data model name].
- In the dialogue box, underneath the title 'Destination' Select the book icon to the left of the search bar to bring up list of Data Models. | Search/List pop-up dialogue box appears containing list of Data Models.
- Select a Data Model from the list . | Search/list pop-up closes. Selected Data Model name appears in search bar underneath title 'Destination'
- Click on 'Create Relationship' button to import Data Model | Data Model is imported
- Verify that imported data model appears in list underneath title '[Data Model Name] Imports ' | Imported Data Model appears in list
- Click on 'Show More Button' plus sign button to the side of the imported Data model name | More Info panel about imported Data Model opens up.
- Select the 'Remove' button (the X sign) from the menu on the right hand side in the opened panel | 'Remove Relationship' pop-up appears asking 'Do you really want to remove relation '[Name Here] imports [Imported Data Model]'?
- Select OK from the 'Remove Relationship' pop up box. | Imported Data Model is removed from list of imported data models (and no longer imported).
- Check that data model is removed from imported Data Models List | Data Model has been removed from 'Imported Data Models' list
/$)

class CheckAdminCanDeleteImportedModelSpec extends GebSpec {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
package org.modelcatalogue.core.rolevisibility

import geb.spock.GebSpec
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.*
import spock.lang.*

@Issue('https://metadata.atlassian.net/browse/MET-1628')
@Title('Check that a Curator is not able to create a data class in finalised model')
@Narrative($/
- Login to Metadata Exchange As Curator | Login successful.
- Click on the 'Create Data Model' button (plus sign) in the top right menu | Redirected to 'Create Data Model' page
- Fill form with Name, Catalogue ID, Description and click the Save button. | New Data Model is created. Redirected to new Data Models main page in display panel.
- Using tree-navigation panel, select Data Classes tag. | Redirected in display panel to Active Data Classes page. Title should be 'Active Data Classes'.
- Click on the Create New (green plus sign) button in the display panel under the 'Active Data Classes' title. | Create new Data Class Wizard pop-up appears. Title is 'Data Class Wizard'.
- Fill Data Class Wizard form with Name, Catalogue ID , description. and click the green save button ( green tick) in the top right hand of the Data Class Wizard. | Data Class is created. Data Class Wizard gives options to Create Another or Close.
- Select to close Data Class Wizard. | Data Class Wizard is closed. New Data Class is present in list under 'Active Data Classes' .
- Using tree panel navigate to the Data Model name and select to go back to the Data Model main page. | Display panel redirects to Data Model main page.
- Navigate to top left hand menu. Select the 'Data Model' menu button | Data Model menu drop-down appears
- From Data Model menu drop-down, select option to 'Finalize' model. | Finalise model dialogue pop-up appears.
- Fill in 'Finalise Data Model' pop-up with Semantic Version number and revision notes. Click on 'Finalize' button. | 'Finalizing' process dialogue box appears
- Wait until text in messages panel ends with 'COMPLETED SUCCESSFULLY'. Click 'Hide' on the 'Finalizing' process box | Data Model is finalized. Redirected to main page of Finalized data model in both display and tree navigation panel
- Using tree navigation panel, select the Data Classes tag. | Redirected in display panel to Active Data Classes page. Title should be 'Active Data Classes'.
- Verify that (In Active Data Classes) under the list of Data Classes, there is no 'Create new' green plus button . | No option to create new data class.
- Verify that there is no left hand menu and no 'Data Class' menu button | No Data Class menu button present in Finalized version of the Data Model
/$)

@Stepwise
class CuratorCannotCreateClassInFinalizedModelSpec extends GebSpec {

@Shared
String dataPageName = UUID.randomUUID().toString()
@Shared
String dataPageId = UUID.randomUUID().toString()
@Shared
String dataPageDescription = "description"
@Shared
String dataClassName = UUID.randomUUID().toString()
@Shared
String dataClassId = UUID.randomUUID().toString()
@Shared
String dataClassDescription = "description"
@Shared
String version = "1.1"
@Shared
String versionNote = "versionNote"


def "Login as curator"() {
when:
LoginPage loginPage = to LoginPage
loginPage.login('curator', 'curator')

then:
at DashboardPage
}

def "Create data model"() {
when:
DashboardPage dashboardPage = browser.page DashboardPage
dashboardPage.nav.createDataModel()
then:
at CreateDataModelPage
}

def "Filling form"() {
when:
CreateDataModelPage createDataModelPage = browser.page CreateDataModelPage
createDataModelPage.name = dataPageName
createDataModelPage.modelCatalogueId = dataPageId
createDataModelPage.description = dataPageDescription
createDataModelPage.submit()
then:
at DataModelPage
}

def "Select data class tag and fill data class wizard"() {
when:
DataModelPage dataModelPage = browser.page DataModelPage
dataModelPage.treeView.select("Data Classes")
then:
DataClassesPage dataClassesPage = browser.page DataClassesPage
assert "Active Data Classes" == dataClassesPage.titleText().trim()

when:
dataClassesPage.addItemIcon.click()
then:
at CreateDataClassPage

when:
CreateDataClassPage createDataClassPage = browser.page CreateDataClassPage
createDataClassPage.name = dataClassName
createDataClassPage.modelCatalogueId = dataClassId
createDataClassPage.description = dataClassDescription
createDataClassPage.finish()
createDataClassPage.exit()
then:
at DataClassesPage
}

def "Navigate to data Model main page "() {
when:
DataModelPage dataModelPage = browser.page DataModelPage
dataModelPage.treeView.dataModel()
then:
at DataModelPage

when:
dataModelPage = browser.page DataModelPage
dataModelPage.dropdown()
dataModelPage.finalizedDataModel()
then:
at FinalizeDataModelPage

when:
FinalizeDataModelPage finalizeDataModelPage = browser.page FinalizeDataModelPage
finalizeDataModelPage.version = version
finalizeDataModelPage.setVersionNote(versionNote)
finalizeDataModelPage.submit()
then:
at FinalizedDataModelPage

when:
FinalizedDataModelPage finalizedDataModelPage = browser.page FinalizedDataModelPage
finalizedDataModelPage.hideConfirmation()
then:
at DataModelPage
}

def "Redirect to data class"() {
when:
DataModelPage dataModelPage = browser.page DataModelPage
dataModelPage.treeView.select("Data Classes")
then:
DataClassesPage dataClassesPage = browser.page DataClassesPage
assert "Active Data Classes" == dataClassesPage.titleText().trim()
}

def "Checking for create button"() {
when:
DataClassesPage dataClassesPage = browser.page DataClassesPage
then:
assert !dataClassesPage.isAddItemIconVisible()
}
}