+
-
+
-
+
-
+
diff --git a/grails-app/views/researchProject/list.gsp b/grails-app/views/researchProject/list.gsp
index 72a9c0a6..3da25024 100644
--- a/grails-app/views/researchProject/list.gsp
+++ b/grails-app/views/researchProject/list.gsp
@@ -1,4 +1,4 @@
-
+
<%@ page import="rgms.researchProject.ResearchProject" %>
@@ -13,6 +13,7 @@
@@ -27,6 +28,19 @@
+
+
+
+
diff --git a/test/cucumber/ResearchProject.feature b/test/cucumber/ResearchProject.feature
index 5b996ead..76a66fda 100644
--- a/test/cucumber/ResearchProject.feature
+++ b/test/cucumber/ResearchProject.feature
@@ -9,14 +9,14 @@ Feature: research project
Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is properly stored by the system
Scenario: duplicated research project
- Given the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ Given the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
When I try to create a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is not stored twice
And no research project stored is affected
Scenario: remove research project
Given the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- And I am logged into the system as administrator of the research group named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ And I am logged into the system as administrator
When I remove the research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
Then the research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is properly removed by the system
@@ -27,8 +27,8 @@ Feature: research project
#if($XMLUpload)
Scenario: upload research project with a file
- Given the system has some research project stored
- And I am logged in the system
+ Given I am logged into the system as administrator
+ And the system has some research project stored
When I upload new research projects from the file "testelattes2.xml"
Then the system has more research projects now
@@ -39,76 +39,80 @@ Feature: research project
Then I'm still on the research project page
And the system shows an error message at the research project page
#end
-
- Scenario: list research projects where I am a member
- Given I am at the research project list page
- When I select the "Meus Projetos de Pesquisa" option at research project menu
- Then the system shows a list with the research projects where I am a member
-
- Scenario: filter research projects by name
- Given I am at the research projects list page
- When I fill the project name field
- And select the option "Filtrar Projetos de Pesquisa"
- Then the system shows the research projects listed by the research projects name
-
- Scenario: remove research project that does not exist
- Given the system has no research projects named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- And I am logged into the system as administrator
- When I try to remove a research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- Then nothing happens to the research projects stored
-
- Scenario: edit existing research project
- Given the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is stored in the system
- And I am logged into the system as administrator of the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I try to edit the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" in the system
- And I changed the data of the research project
- Then the data of the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is updated in the system
Scenario: new invalid research project with blank name
- Given the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is stored in the system
+ Given the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
When I try to create a research project named as ""
Then the research project "" is not stored by the system because it is invalid
And no research project stored is affected
Scenario: new invalid research project with blank description
- Given the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I try to create a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" with description field blank
- Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is not stored by the system because it is invalid
+ Given the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas"
+ When I try to create a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas" with description field blank
+ Then the research project "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas" is not stored by the system because it is invalid
And no research project stored is affected
Scenario: new research project with duplicated members
- Given the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I create a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" with member field duplicated
- Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is properly stored by the system
- And the stored member list does not have duplicated members
+ Given the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas members duplicated"
+ When I create a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas members duplicated" with member field duplicated
+ Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas members duplicated" is properly stored by the system
+ And the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas members duplicated" does not have duplicated members
Scenario: new research project web
- Given I am at new research project page
- And the system has no research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I create the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- Then the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is stored by the system
- And it is shown in the research project list with name "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ Given I am at the publications menu
+ And I go to new research project page
+ And the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web"
+ When I create a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web" with all required data filled on the web
+ Then it is shown in the research project list with name "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web"
Scenario: new invalid research project with blank name web
- Given I am at new research project page
- And the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is stored in the system
- When I try to create the research project named ""
- Then the research project named "" is not stored by the system because it is invalid
- And the system shows an error message at the research project page
- And no research project stored is affected
+ Given I am at the publications menu
+ And I go to new research project page
+ And the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web" created on web
+ When I try to create a research project named as "" on the web
+ Then the research project "" is not stored by the system because it is invalid
+ And the system shows an error message at the new research project page
+ And I'm still on the new research project page
+ And no research project stored is affected
Scenario: new invalid research project with blank description web
- Given I am at new research project page
- And the system has no research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I try to create the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" with description field blank
- Then the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is not stored by the system because it is invalid
- And the system shows an error message at the research project page
+ Given I am at the publications menu
+ And I go to new research project page
+ And the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web 2"
+ When I try to create a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web 2" with description field blank on the web
+ Then the research project "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web 2" is not stored by the system because it is invalid
+ And I'm still on the new research project page
+ And the system shows an error message at the new research project page
And no research project stored is affected
Scenario: duplicated research project web
- Given I am at new research project page
- And the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- When I try to create the research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
- Then the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is not stored twice
- And it is not shown duplicated in the research project list
- And the system shows an warning message at the research project page
+ Given I am at the publications menu
+ And I go to new research project page
+ And the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web" created on web
+ When I try to create a research project named as "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web" on the web
+ Then the system shows an error message at the new research project page
+ And the research project "Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web" is not shown duplicated in the research project list
+
+ Scenario: list research projects where I am a member
+ Given I am at the research project list page
+ When I select the option to show my research projects
+ Then the system shows a list with the research projects where I am a member
+
+ #if($Filter_ResearchProject)
+ Scenario: filter research projects by name
+ Given I am at the research project list page
+ When I fill the project name filter field with "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ And select the option to filter the research projects
+ Then the system shows the research projects with the name "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ #end
+
+ Scenario: remove research project that does not exist
+ Given the system has no research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ And I am logged into the system as administrator
+ When I remove the research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas"
+ Then no research project stored is affected
+
+ Scenario: edit existing research project
+ Given the system has a research project named as "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" created on web
+ When I edit the research project "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" in the system
+ Then the data of the research project named "Implementação Progressiva de Aplicações Orientadas a Objetos Complexas" is updated in the system
diff --git a/test/cucumber/steps/ResearchProjectSteps.groovy b/test/cucumber/steps/ResearchProjectSteps.groovy
index 41611c7f..8a8aebd5 100644
--- a/test/cucumber/steps/ResearchProjectSteps.groovy
+++ b/test/cucumber/steps/ResearchProjectSteps.groovy
@@ -1,61 +1,103 @@
-package steps
-
+import org.apache.shiro.SecurityUtils
+import org.apache.shiro.UnavailableSecurityManagerException
+import pages.LoginPage
import pages.researchProject.ResearchProjectPage
+import pages.researchProject.ResearchProjectPageCreatePage
+import pages.researchProject.ResearchProjectPageEditPage
+import pages.researchProject.ResearchProjectPageShowPage
+import rgms.authentication.User
+import rgms.member.Member
import rgms.researchProject.ResearchProject
+import steps.ResearchProjectTestDadaAndOperations
+import steps.TestDataAndOperations
+
+import static cucumber.api.groovy.EN.*
/**
* Created by Bruno Soares on 24/02/14.
+ * Edited by Gert Müller and Vilmar Nepomuceno on 16/06/14.
*/
+def initialSize = 0
-import static cucumber.api.groovy.EN.*
+def List oldProjects
-def initialSize = 0
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: new research project
-//Create Research Project
-Given(~'^the system has no research project named as "([^"]*)"$'){ String projectName ->
- assert checkIfResearchProjectNoExists(projectName)
+Given(~'^the system has no research project named as "([^"]*)"$') { String projectName ->
+ if(!checkIfResearchProjectNoExists(projectName)) {
+ ResearchProject.findByProjectName(projectName).delete();
+ }
+
+ assert checkIfResearchProjectNoExists(projectName);
}
-When(~'^I create a research project named as "([^"]*)"$'){ String projectName ->
- ResearchProjectTestDadaAndOperations.createResearchProject(projectName)
+When(~'^I create a research project named as "([^"]*)" with all required data$') { String projectName ->
+ ResearchProjectTestDadaAndOperations.createResearchProject(projectName);
}
-Then(~'^the research project "([^"]*)" is properly stored by the system$'){ String projectName ->
- assert checkIfResearchProjectExists(projectName)
+Then(~'^the research project "([^"]*)" is properly stored by the system$') { String projectName ->
+ assert checkIfResearchProjectExists(projectName);
}
+// ------------------------------------------------------------------------------------------------------------------------------
-//Duplicated Research Project
-Given(~'^the system has a research project named as "([^"]*)"$'){ String projectName ->
- ResearchProject project = ResearchProject.findByProjectName(projectName)
- if(!project){
- ResearchProjectTestDadaAndOperations.createResearchProject(projectName)
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: duplicated research project
+
+Given(~'^the system has a research project named as "([^"]*)"$') { String projectName ->
+ ResearchProject project = ResearchProject.findByProjectName(projectName);
+
+ if(project==null) {
+ ResearchProjectTestDadaAndOperations.createResearchProject(projectName);
}
- assert ResearchProject.findByProjectName(projectName) != null
+
+ assert ResearchProject.findByProjectName(projectName) != null;
+}
+
+When(~'^I try to create a research project named as "([^"]*)"$') { String projectName ->
+ oldProjects = ResearchProject.findAll();
+ ResearchProjectTestDadaAndOperations.createResearchProject(projectName);
}
-Then(~'^the research project "([^"]*)" is not store twice$'){ String projectName ->
- assert ResearchProject.findAllByProjectName(projectName).size() == 1
+Then(~'^the research project "([^"]*)" is not stored twice$') { String projectName ->
+ assert ResearchProject.findAllByProjectName(projectName).size() == 1;
}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: remove research project
-//Remove Research Project
-When(~'^I remove the research project named as "([^"]*)"$'){ String projectName ->
- ResearchProjectTestDadaAndOperations.deleteResearchProject(projectName)
+When(~'^I remove the research project named as "([^"]*)"$') { String projectName ->
+ oldProjects = ResearchProject.findAll();
+ ResearchProjectTestDadaAndOperations.deleteResearchProject(projectName);
+ TestDataAndOperations.logoutController(this);
}
-Then(~'^the research project named as "([^"]*)" is properly removed by the system$'){ String projectName ->
- assert checkIfResearchProjectNoExists(projectName)
+Then(~'^the research project named as "([^"]*)" is properly removed by the system$') { String projectName ->
+ assert checkIfResearchProjectNoExists(projectName);
}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: new research project without funders
-//new research project without funders
When(~'^I create a research project named as "([^"]*)" without funders$'){ String projectName ->
- ResearchProjectTestDadaAndOperations.createResearchProject(projectName)
+ ResearchProjectTestDadaAndOperations.createResearchProjectWithoutFunders(projectName);
}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: upload research project with a file
+// XML import
-//XML import
Given(~'^the system has some research project stored$'){ ->
- TestDataAndOperations.loginController(this)
+ ResearchProjectTestDadaAndOperations.createResearchProject("Implementação Progressiva de Aplicações Orientadas a Objetos Complexas");
initialSize = ResearchProject.findAll().size()
+ assert initialSize > 0
}
When(~'^I upload new research projects from the file "([^"]*)"$') { filename ->
@@ -68,8 +110,12 @@ Then(~'^the system has more research projects now$'){ ->
finalSize = ResearchProject.findAll().size()
assert initialSize < finalSize
}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// XML Import web
-//XML Import web
When (~'^I select the upload button at the research project page$'){ ->
at ResearchProjectPage
page.submitXML()
@@ -82,8 +128,177 @@ Then (~'^I\'m still on the research project page$'){ ->
Then (~'^the system shows an error message at the research project page$'){ ->
assert page.hasInvalidXMLSubmited()
}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: list research projects where I am a member
+
+Given(~'^I am at the research project list page$') { ->
+ to LoginPage;
+ at LoginPage;
+ page.fillLoginData("admin", "adminadmin");
+ to ResearchProjectPage;
+ at ResearchProjectPage;
+}
+
+When(~'^I select the option to show my research projects$') { ->
+ page.myProjects();
+}
+
+Then(~'^the system shows a list with the research projects where I am a member$') { ->
+ page.checkResearchGroupHasLoggedUserAsMember("admin");
+}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: filter research projects by name
+
+When(~'^I fill the project name filter field with "([^"]*)"$') { String filter ->
+ page.fillFilterResearchProject(filter);
+}
+
+When(~'^select the option to filter the research projects$') { ->
+ page.filter();
+}
+
+Then(~'^the system shows the research projects with the name "([^"]*)"$') { String filter ->
+ page.checkResearchGroupListFilteredByName(filter);
+}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: remove research project that does not exist
+
+Given(~'^I am logged into the system as administrator$') { ->
+ TestDataAndOperations.loginController(this);
+}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Scenario: edit existing research project
+
+When(~'^I edit the research project "([^"]*)" in the system$') { String projectName ->
+ oldProject = ResearchProject.findByProjectName(projectName);
+
+ to ResearchProjectPage;
+ at ResearchProjectPage;
+ page.selectReseachGroup(projectName);
+ at ResearchProjectPageShowPage;
+ page.selectEditReseachGroup();
+ at ResearchProjectPageEditPage;
+ page.fillUpdateDescription("Nova Descrição para Teste");
+ page.saveUpdates();
+}
+
+Then(~'^the data of the research project named "([^"]*)" is updated in the system$') { String projectName ->
+ newProject = ResearchProject.findByProjectName(projectName);
+ assert oldProjects.description != newProject.description;
+}
+// ------------------------------------------------------------------------------------------------------------------------------
+
+
+// ------------------------------------------------------------------------------------------------------------------------------
+Then(~'^no research project stored is affected'){ ->
+ assert checkIfNoResearchProjectAffected(oldProjects)
+}
+
+Then(~'^the research project "([^"]*)" is not stored by the system because it is invalid$'){ String projectName ->
+ assert ResearchProject.findByProjectName(projectName) == null
+}
+
+When(~'^I try to create a research project named as "([^"]*)" with description field blank$'){ String projectName ->
+ oldProjects = ResearchProject.findAll()
+ ResearchProjectTestDadaAndOperations.createResearchProject(projectName)
+}
+
+When(~'^I create a research project named as "([^"]*)" with member field duplicated$'){ String projectName ->
+ ResearchProjectTestDadaAndOperations.createResearchProject(projectName)
+ assert ResearchProject.findByProjectName(projectName) != null;
+}
+
+Then(~'^the research project "([^"]*)" does not have duplicated members$'){String projectName ->
+ ResearchProject project = ResearchProject.findByProjectName(projectName);
+ boolean check = true
+
+ project.members.each {member ->
+ project.members.remove(member)
+ if (project.members.contains(member)) {
+ check = false
+ }
+ }
+
+ assert check
+}
+
+Given (~'^I go to new research project page$'){ ->
+ to ResearchProjectPage
+ page.selectNewReseachGroup()
+ at ResearchProjectPageCreatePage
+
+}
+
+When(~'^I create a research project named as "([^"]*)" with all required data filled on the web$'){ String projectName ->
+ page.fillResearchProject(projectName)
+ page.createResearchProject()
+ assert ResearchProject.findByProjectName(projectName) != null
+}
+
+Then (~'^I\'m still on the new research project page$'){ ->
+ at ResearchProjectPageCreatePage
+}
+
+Then (~'^the system shows an error message at the new research project page$') { ->
+ at ResearchProjectPageCreatePage
+ page.checkHasErrorMsg()
+}
+
+Then(~'^it is shown in the research project list with name "([^"]*)"$'){ String projectName ->
+ to ResearchProjectPage
+ page.checkResearchGroupAtList(projectName)
+}
+
+When(~'^I try to create a research project named as "([^"]*)" with description field blank on the web$'){ String projectName ->
+ // updated
+ oldProjects = ResearchProject.findAll()
+ page.fillResearchProjectWithBlankDescription(projectName)
+ page.createResearchProject()
+}
+
+Given(~'^the system has a research project named as "([^"]*)" created on web$') { String projectName ->
+ ResearchProject project = ResearchProject.findByProjectName(projectName);
+
+ if(!project) {
+ to ResearchProjectPageCreatePage
+ page.fillResearchProject(projectName)
+ page.createResearchProject()
+ to ResearchProjectPage
+ page.selectNewReseachGroup()
+ at ResearchProjectPageCreatePage
+ }
+
+ assert ResearchProject.findByProjectName(projectName) != null;
+}
+
+When(~'^I try to create a research project named as "([^"]*)" on the web$'){ String projectName ->
+ // updated
+ oldProjects = ResearchProject.findAll()
+ at ResearchProjectPageCreatePage
+ page.fillResearchProject(projectName)
+ page.createResearchProject()
+}
+
+Then(~'^the research project "([^"]*)" is not shown duplicated in the research project list$'){ projectName ->
+ to ResearchProjectPage
+ page.checkResearchGroupDuplicatedAtList(projectName)
+}
+
+// ------------------------------------------------------------------------------------------------------------------------------
+// Aux Functions
-//Aux Functions
def checkIfResearchProjectNoExists(String projectName){
ResearchProject project = ResearchProject.findByProjectName(projectName)
project == null
@@ -93,4 +308,19 @@ def checkIfResearchProjectExists(String projectName){
ResearchProject project = ResearchProject.findByProjectName(projectName)
ResearchProject project2 = ResearchProjectTestDadaAndOperations.findResearchProjectByProjectName(projectName)
project.equals(project2)
+}
+
+def checkIfNoResearchProjectAffected(oldProjects) {
+ List beforeProjects = oldProjects
+ List afterProjects = ResearchProject.findAll()
+
+ beforeProjects.equals(afterProjects)
+}
+
+def checkIfLoggedUserIsAdmin() {
+ try {
+ return SecurityUtils.subject.principal=="admin";
+ } catch(UnavailableSecurityManagerException e) {
+ return false;
+ }
}
\ No newline at end of file
diff --git a/test/functional/pages/researchProject/ResearchProjectPage.groovy b/test/functional/pages/researchProject/ResearchProjectPage.groovy
index cdfe5921..8261b3a4 100644
--- a/test/functional/pages/researchProject/ResearchProjectPage.groovy
+++ b/test/functional/pages/researchProject/ResearchProjectPage.groovy
@@ -1,7 +1,11 @@
package pages.researchProject
+import org.apache.shiro.SecurityUtils
+import org.apache.shiro.UnavailableSecurityManagerException
import pages.FormPage
import pages.GetPageTitle
+import rgms.authentication.User
+import rgms.researchProject.ResearchProject
/**
* Created by Bruno Soares on 24/02/14.
@@ -34,13 +38,102 @@ class ResearchProjectPage extends FormPage {
$('input', class:'save').click()
}
+ def filter() {
+ $("input", class: "filter").click();
+ }
+
+ def myProjects() {
+ $("a", class: "myProjects").click();
+ }
+
def hasInvalidXMLSubmited(){
GetPageTitle gp = new GetPageTitle()
return gp.msg('default.xml.parserror.message') == $("div", class: "message", role: "status").text()
}
def selectReseachGroup(String name){
- $("a", text: name).click()
+ $("a", text: name).click();
+ }
+
+ def fillFilterResearchProject(projectName) {
+ $("form").projectName = projectName;
+ }
+
+ def getResearchGroupRows() {
+ def listDiv = $('div', id: 'list-researchProject')
+ def researchGroupTable = (listDiv.find('table'))[0]
+ def researchGroupRows = researchGroupTable.find('tbody').find('tr')
+ researchGroupRows
+ }
+
+ def checkResearchGroupAtList(projectName) {
+ def researchGroupRows = getResearchGroupRows()
+ int size = researchGroupRows.size();
+ def researchGroupColumns = researchGroupRows[size - 1].find('td')
+
+ assert researchGroupColumns[0].text() == projectName
+ }
+
+ def checkResearchGroupDuplicatedAtList(projectName) {
+ boolean check = true;
+ def researchGroupRows = getResearchGroupRows()
+ int size = researchGroupRows.size();
+ if (size > 1) {
+ def researchGroupColumns = researchGroupRows[size - 1].find('td')
+ def researchGroupColumnsPreviews = researchGroupRows[size - 2].find('td')
+ if ((researchGroupColumns[0].text() == projectName) &&
+ researchGroupColumnsPreviews[0].text() == projectName) {
+ check = false
+ }
+ }
+ assert check
+ }
+
+ def checkResearchGroupHasLoggedUserAsMember(String loggedUser) {
+ // Procura usuário logado no Apache Shiro
+ def User user;
+ try {
+ user = User.findByUsername(loggedUser);
+ } catch(UnavailableSecurityManagerException e) {
+ return false;
+ }
+
+ boolean check = true;
+
+ // obtém da tela as linhas da tabela que lista os Projetos de Pesquisa
+ def researchGroupRows = getResearchGroupRows()
+ int size = researchGroupRows.size();
+
+ // percorre a tabela para procurar o nome do usuário logado como membro dos Projetos de Pesquisa
+ if(size > 1) {
+ for(int i=0; i 1) {
+ for(int i=0; i 0)
+ }
+
+ def checkHasWarningMsg() {
+ checkHasErrorMsg()
+ }
}
diff --git a/test/functional/pages/researchProject/ResearchProjectPageEditPage.groovy b/test/functional/pages/researchProject/ResearchProjectPageEditPage.groovy
index e85d9c19..321a2f1c 100644
--- a/test/functional/pages/researchProject/ResearchProjectPageEditPage.groovy
+++ b/test/functional/pages/researchProject/ResearchProjectPageEditPage.groovy
@@ -21,4 +21,12 @@ class ResearchProjectPageEditPage extends FormPage{
$("div", class: "message")
}
}
+
+ def fillUpdateDescription(newDescription) {
+ $("form").description = newDescription;
+ }
+
+ def saveUpdates() {
+ $("input", class: "save").click();
+ }
}
diff --git a/test/functional/pages/researchProject/ResearchProjectPageShowPage.groovy b/test/functional/pages/researchProject/ResearchProjectPageShowPage.groovy
index fa4db19e..fbea05cf 100644
--- a/test/functional/pages/researchProject/ResearchProjectPageShowPage.groovy
+++ b/test/functional/pages/researchProject/ResearchProjectPageShowPage.groovy
@@ -30,6 +30,10 @@ class ResearchProjectPageShowPage extends FormPage {
$('a', class: 'create').click()
}
+ def selectEditReseachGroup() {
+ $('a', class: 'edit').click()
+ }
+
def backToHome(){
$('a', class:'home').click()
}
diff --git a/test/functional/steps/ResearchProjectTestDadaAndOperations.groovy b/test/functional/steps/ResearchProjectTestDadaAndOperations.groovy
index e402a19b..ecf83883 100644
--- a/test/functional/steps/ResearchProjectTestDadaAndOperations.groovy
+++ b/test/functional/steps/ResearchProjectTestDadaAndOperations.groovy
@@ -1,5 +1,8 @@
package steps
+import org.springframework.mock.web.MockMultipartFile
+import org.springframework.mock.web.MockMultipartHttpServletRequest
+import rgms.XMLService
import rgms.publication.XMLController
import rgms.researchProject.ResearchProject
import rgms.researchProject.ResearchProjectController
@@ -9,8 +12,6 @@ import rgms.researchProject.ResearchProjectController
*/
class ResearchProjectTestDadaAndOperations {
- static ResearchProjectController cont = new ResearchProjectController()
-
static researchProjects =[
[projectName:"Implementação Progressiva de Aplicações Orientadas a Objetos Complexas",
description:"Neste projeto pretendemso definir e validar um método para a implementação de aplicações orientadas a objetos complexas. Em particular, este método deve suportar uma abordagem progressiva para implementação orientada a objetos, de forma que aspectos de distribuição, concorrência, e persistência não sejam inicialmente considerados pelo processo de implementação, mas sejam gradualmente introduzidos, preservando os requisitos funcionais da aplicação.",
@@ -28,6 +29,36 @@ class ResearchProjectTestDadaAndOperations {
startYear: 2001,
endYear: 2004,
members: ["Bruno Soares da Silva","Dyego Felipe Oliveira de Penha", "Pedro Henrique Torres Gonçalves"]
+ ],
+ [projectName:"Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas",
+ description:"",
+ status:"CONCLUIDO",
+ responsible: "Paulo Henrique Monteiro Borba",
+ startYear: 2001,
+ endYear: 2004,
+ members: ["Bruno Soares da Silva"]
+ ],
+ [projectName:"Implementação Progressiva de Aplicações Orientadas a Objetos Complexas members duplicated",
+ description:"Neste projeto pretendemso definir e validar um método para a implementação de aplicações orientadas a objetos complexas. Em particular, este método deve suportar uma abordagem progressiva para implementação orientada a objetos, de forma que aspectos de distribuição, concorrência, e persistência não sejam inicialmente considerados pelo processo de implementação, mas sejam gradualmente introduzidos, preservando os requisitos funcionais da aplicação.",
+ status:"CONCLUIDO",
+ responsible: "Paulo Henrique Monteiro Borba",
+ startYear: 2000,
+ endYear: 2003,
+ members: ["Rubens Lopes da Silva", "Rubens Lopes da Silva"]
+ ],
+ [projectName:"Implementação Progressiva de Aplicações Orientadas a Aspectos Complexas web",
+ description:"Neste projeto pretendemso definir e validar um método para a implementação de aplicações orientadas a Aspectos Complexas web. Em particular, este método deve suportar uma abordagem progressiva para implementação orientada a objetos, de forma que aspectos de distribuição, concorrência, e persistência não sejam inicialmente considerados pelo processo de implementação, mas sejam gradualmente introduzidos, preservando os requisitos funcionais da aplicação.",
+ status:"CONCLUIDO",
+ responsible: "Paulo Henrique Monteiro Borba",
+ startYear: 2001,
+ endYear: 2004,
+ ],
+ [projectName:"",
+ description:"Neste projeto pretendemso definir e validar um método para a implementação de aplicações orientadas a Aspectos Complexas web. Em particular, este método deve suportar uma abordagem progressiva para implementação orientada a objetos, de forma que aspectos de distribuição, concorrência, e persistência não sejam inicialmente considerados pelo processo de implementação, mas sejam gradualmente introduzidos, preservando os requisitos funcionais da aplicação.",
+ status:"CONCLUIDO",
+ responsible: "Paulo Henrique Monteiro Borba",
+ startYear: 2001,
+ endYear: 2004,
]
]
@@ -38,6 +69,7 @@ class ResearchProjectTestDadaAndOperations {
}
private static void createResearchProjectDefault(String name) {
+ def cont = new ResearchProjectController()
cont.params << findResearchProjectByProjectName(name)
cont.request.setContent(new byte[1000]) // Could also vary the request content.
cont.create()
@@ -45,6 +77,17 @@ class ResearchProjectTestDadaAndOperations {
cont.response.reset()
}
+ public static void createResearchProjectWithoutFunders(String name) {
+ def cont = new ResearchProjectController()
+ def rp = findResearchProjectByProjectName(name);
+ rp.funders = null;
+ cont.params << rp;
+ cont.request.setContent(new byte[1000]);
+ cont.create();
+ cont.save();
+ cont.response.reset();
+ }
+
public static void createResearchProject(String name){
createResearchProjectDefault(name)
}
@@ -54,17 +97,19 @@ class ResearchProjectTestDadaAndOperations {
}
public static void deleteResearchProject(String name){
+ def cont = new ResearchProjectController()
ResearchProject project = getIfResearchProjectExists(findResearchProjectByProjectName(name).projectName)
if(project) {
cont.delete(project.id)
}
}
- static public void uploadOrientation(filepath) {
+ static public void uploadOrientation(filePath) {
def cont = new XMLController()
- def xml = new File((String) filepath);
- def records = new XmlParser()
- cont.saveReseachProject(records.parse(xml));
- cont.response.reset()
+ def mockRequest = new MockMultipartHttpServletRequest()
+ def uploadedFile = new File(filePath)
+ mockRequest.addFile(new MockMultipartFile("file", uploadedFile.bytes))
+ cont.metaClass.request = mockRequest
+ cont.uploadXMLResearchProject()
}
}