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() } }