diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-07-24 11:49:51 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-07-24 12:22:48 +0200 |
commit | 05e45302f2bc7263da1d298bf2ad4178bebdd26f (patch) | |
tree | a5492b9b556079df001e486548df96c4439d00bc | |
parent | 40f40f2432bcf0874f264d605ef210d05c89bc74 (diff) | |
download | sonarqube-05e45302f2bc7263da1d298bf2ad4178bebdd26f.tar.gz sonarqube-05e45302f2bc7263da1d298bf2ad4178bebdd26f.zip |
Add some ITs on measures
42 files changed, 2187 insertions, 1 deletions
diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/sonar-project.properties new file mode 100644 index 00000000000..a081a0e6342 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/sonar-project.properties @@ -0,0 +1 @@ +sonar.projectName=Sub-module A1 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo new file mode 100644 index 00000000000..74d29a4fa08 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo @@ -0,0 +1,16 @@ +package com.sonar.it.samples.modules.a1; + +public class HelloA1 { + private int i; + private HelloA1() { + + } + + public void hello() { + System.out.println("hello" + " xoo"); + } + + protected String getHello() { + return "hello"; + } +}
\ No newline at end of file diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo.measures b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo.measures new file mode 100644 index 00000000000..7812e4167fb --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a1/src/main/xoo/com/sonar/it/samples/modules/a1/HelloA1.xoo.measures @@ -0,0 +1,2 @@ +ncloc:12 +classes:1 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/sonar-project.properties new file mode 100644 index 00000000000..fcedab83843 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/sonar-project.properties @@ -0,0 +1 @@ +sonar.projectName=Sub-module A2 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo new file mode 100644 index 00000000000..796d90cfad5 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo @@ -0,0 +1,20 @@ +package com.sonar.it.samples.modules.a2; + +public class HelloA2 { + + public HelloA2(int i) { + int j = i++; + } + + public void hello() { + System.out.println("hello" + " xoo"); + } + + private String myMethod() { + if (foo == bar) { + return "hello"; + } else { + throw new IllegalStateException(); + } + } +} diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo.measures b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo.measures new file mode 100644 index 00000000000..63df5add6d4 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/module_a2/src/main/xoo/com/sonar/it/samples/modules/a2/HelloA2.xoo.measures @@ -0,0 +1,2 @@ +ncloc:15 +classes:1 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_a/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_a/sonar-project.properties new file mode 100644 index 00000000000..7e6ca9074a4 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_a/sonar-project.properties @@ -0,0 +1,4 @@ +sonar.projectKey=module_a +sonar.projectName=Module A + +sonar.modules=module_a1,module_a2 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/sonar-project.properties new file mode 100644 index 00000000000..ca8404b7bd4 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/sonar-project.properties @@ -0,0 +1 @@ +sonar.projectName=Sub-module B1 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo new file mode 100644 index 00000000000..b83c3af128c --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo @@ -0,0 +1,12 @@ +package com.sonar.it.samples.modules.b1; + +public class HelloB1 { + private int i; + private HelloB1() { + + } + + public void hello() { + System.out.println("hello" + " world"); + } +}
\ No newline at end of file diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo.measures b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo.measures new file mode 100644 index 00000000000..3947d3bdbff --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b1/src/main/xoo/com/sonar/it/samples/modules/b1/HelloB1.xoo.measures @@ -0,0 +1,2 @@ +ncloc:12 +classes:1
\ No newline at end of file diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/sonar-project.properties new file mode 100644 index 00000000000..e597dab4f33 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/sonar-project.properties @@ -0,0 +1 @@ +sonar.projectName=Sub-module B2 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo new file mode 100644 index 00000000000..20b8bb3876a --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo @@ -0,0 +1,12 @@ +package com.sonar.it.samples.modules.b2; + +public class HelloB2 { + private int i; + private HelloB2() { + + } + + public void hello() { + System.out.println("hello" + " world"); + } +}
\ No newline at end of file diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo.measures b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo.measures new file mode 100644 index 00000000000..3947d3bdbff --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/module_b2/src/main/xoo/com/sonar/it/samples/modules/b2/HelloB2.xoo.measures @@ -0,0 +1,2 @@ +ncloc:12 +classes:1
\ No newline at end of file diff --git a/it/it-projects/measure/xoo-multi-modules-sample/module_b/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/module_b/sonar-project.properties new file mode 100644 index 00000000000..21d69f769d3 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/module_b/sonar-project.properties @@ -0,0 +1,4 @@ +sonar.projectKey=module_b +sonar.projectName=Module B + +sonar.modules=module_b1,module_b2 diff --git a/it/it-projects/measure/xoo-multi-modules-sample/sonar-project.properties b/it/it-projects/measure/xoo-multi-modules-sample/sonar-project.properties new file mode 100644 index 00000000000..7935cb5ffb0 --- /dev/null +++ b/it/it-projects/measure/xoo-multi-modules-sample/sonar-project.properties @@ -0,0 +1,12 @@ +# Root project information +sonar.projectKey=com.sonarsource.it.samples:multi-modules-sample +sonar.projectName=Sonar :: Integration Tests :: Multi-modules Sample +sonar.projectVersion=1.0-SNAPSHOT + +sonar.language=xoo + +# Some properties that will be inherited by the modules +sonar.sources=src/main/xoo + +# List of the module identifiers +sonar.modules=module_a,module_b diff --git a/it/it-projects/measure/xoo-sample/sonar-project.properties b/it/it-projects/measure/xoo-sample/sonar-project.properties new file mode 100644 index 00000000000..9e4aa0e3584 --- /dev/null +++ b/it/it-projects/measure/xoo-sample/sonar-project.properties @@ -0,0 +1,5 @@ +sonar.projectKey=sample +sonar.projectName=Sample +sonar.projectVersion=1.0-SNAPSHOT +sonar.sources=src/main/xoo +sonar.language=xoo diff --git a/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo b/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo new file mode 100644 index 00000000000..41871e123a3 --- /dev/null +++ b/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo @@ -0,0 +1,16 @@ +package sample; + +public class Sample { + + public Sample(int i) { + int j = i++; + } + + private String myMethod() { + if (foo == bar) { + return "hello"; + } else { + throw new IllegalStateException(); + } + } +} diff --git a/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo.measures b/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo.measures new file mode 100644 index 00000000000..3f73ea8f695 --- /dev/null +++ b/it/it-projects/measure/xoo-sample/src/main/xoo/sample/Sample.xoo.measures @@ -0,0 +1,11 @@ +ncloc:13 +#Used by dashboard/widgets tests +complexity:3 +complexity_in_classes:3 +classes:1 +comment_lines:3 +public_api:5 +public_undocumented_api:2 +duplicated_files:1 +duplicated_blocks:2 +duplicated_lines:3 diff --git a/it/it-projects/testing/xoo-sample-it-coverage/src/main/xoo/sample/Sample.xoo b/it/it-projects/testing/xoo-sample-it-coverage/src/main/xoo/sample/Sample.xoo index 41871e123a3..ad246dc8813 100644 --- a/it/it-projects/testing/xoo-sample-it-coverage/src/main/xoo/sample/Sample.xoo +++ b/it/it-projects/testing/xoo-sample-it-coverage/src/main/xoo/sample/Sample.xoo @@ -1,4 +1,4 @@ -package sample; +ackage sample; public class Sample { diff --git a/it/it-tests/src/test/java/measure/CustomMeasuresTest.java b/it/it-tests/src/test/java/measure/CustomMeasuresTest.java new file mode 100644 index 00000000000..c624e62c797 --- /dev/null +++ b/it/it-tests/src/test/java/measure/CustomMeasuresTest.java @@ -0,0 +1,120 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package measure; + +import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.build.SonarRunner; +import com.sonar.orchestrator.selenium.Selenese; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Ignore; +import org.junit.Test; +import org.sonar.wsclient.services.Measure; +import org.sonar.wsclient.services.Resource; +import org.sonar.wsclient.services.ResourceQuery; +import util.ItUtils; + +import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.projectDir; + +public class CustomMeasuresTest { + + public static final String PROJECT_KEY = "sample"; + @ClassRule + public static Orchestrator orchestrator = MeasuresTestSuite.ORCHESTRATOR; + + @Before + public void deleteProjects() { + orchestrator.resetData(); + } + + @Test + public void custom_measures_should_be_integrated_during_project_analysis() { + analyzeProject(); + setBurnedBudget(1200.3); + setTeamSize(4); + + assertThat(getMeasure("team_size")).isNull(); + assertThat(getMeasure("burned_budget")).isNull(); + + analyzeProject(); + + assertThat(getMeasure("burned_budget").getValue()).isEqualTo(1200.3); + assertThat(getMeasure("team_size").getIntValue()).isEqualTo(4); + } + + @Test + public void should_update_value() { + analyzeProject(); + setTeamSize(4); + analyzeProject(); + updateTeamSize(15); + assertThat(getMeasure("team_size").getIntValue()).isEqualTo(4); + analyzeProject();// the value is available when the project is analyzed again + assertThat(getMeasure("team_size").getIntValue()).isEqualTo(15); + } + + @Test + public void should_delete_custom_measure() { + analyzeProject(); + setTeamSize(4); + analyzeProject(); + deleteCustomMeasure("team_size"); + assertThat(getMeasure("team_size").getIntValue()).isEqualTo(4);// the value is still available. It will be removed during next analyzed + + analyzeProject(); + assertThat(getMeasure("team_size")).isNull(); + } + + private void analyzeProject() { + orchestrator.executeBuild(SonarRunner.create(projectDir("measure/xoo-sample"))); + } + + private void setTeamSize(int i) { + orchestrator.getServer().adminWsClient().post("api/custom_measures/create", "projectKey", PROJECT_KEY, "metricKey", "team_size", "value", String.valueOf(i)); + } + + private void updateTeamSize(int i) { + String response = orchestrator.getServer().adminWsClient().get("api/custom_measures/search", "projectKey", PROJECT_KEY, "metricKey", "team_size"); + Matcher jsonObjectMatcher = Pattern.compile(".*?\"id\"\\s*:\\s*\"(.*?)\".*", Pattern.MULTILINE).matcher(response); + jsonObjectMatcher.find(); + String customMeasureId = jsonObjectMatcher.group(1); + orchestrator.getServer().adminWsClient().post("api/custom_measures/update", "id", customMeasureId, "value", String.valueOf(i)); + } + + private void setBurnedBudget(double d) { + orchestrator.getServer().adminWsClient().post("api/custom_measures/create", "projectKey", PROJECT_KEY, "metricKey", "burned_budget", "value", String.valueOf(d)); + } + + private void deleteCustomMeasure(String metricKey) { + String response = orchestrator.getServer().adminWsClient().get("api/custom_measures/search", "projectKey", PROJECT_KEY, "metricKey", metricKey); + Matcher jsonObjectMatcher = Pattern.compile(".*?\"id\"\\s*:\\s*\"(.*?)\".*", Pattern.MULTILINE).matcher(response); + jsonObjectMatcher.find(); + String customMeasureId = jsonObjectMatcher.group(1); + orchestrator.getServer().adminWsClient().post("api/custom_measures/delete", "id", customMeasureId); + } + + private Measure getMeasure(String metricKey) { + Resource resource = orchestrator.getServer().getWsClient().find(ResourceQuery.createForMetrics(PROJECT_KEY, metricKey)); + return resource != null ? resource.getMeasure(metricKey) : null; + } +} diff --git a/it/it-tests/src/test/java/measure/MeasureFiltersTest.java b/it/it-tests/src/test/java/measure/MeasureFiltersTest.java new file mode 100644 index 00000000000..ebc5a91a8a9 --- /dev/null +++ b/it/it-tests/src/test/java/measure/MeasureFiltersTest.java @@ -0,0 +1,160 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package measure; + +import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.build.SonarRunner; +import com.sonar.orchestrator.selenium.Selenese; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.sonar.wsclient.SonarClient; +import org.sonar.wsclient.permissions.PermissionParameters; +import org.sonar.wsclient.user.UserParameters; + +import static util.ItUtils.projectDir; + +public class MeasureFiltersTest { + + @ClassRule + public static Orchestrator orchestrator = MeasuresTestSuite.ORCHESTRATOR; + + @BeforeClass + public static void scanStruts() { + orchestrator.resetData(); + orchestrator.executeBuild(SonarRunner.create(projectDir("measure/xoo-multi-modules-sample"))); + + createUser("user-measure-filters", "User Measure Filters"); + } + + @AfterClass + public static void deleteTestUser() { + deactivateUser("user-measure-filters"); + } + + @Test + public void execute_measure_filters() { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("execution_of_measure_filters", + "/measure/measure_filters/link_from_main_header.html", + "/measure/measure_filters/initial_search_form.html", + "/measure/measure_filters/search_for_projects.html", + "/measure/measure_filters/search_for_files.html", + // SONAR-4195 + "/measure/measure_filters/search-by-key.html", + "/measure/measure_filters/search-by-name.html", + "/measure/measure_filters/empty_filter.html" + ).build(); + orchestrator.executeSelenese(selenese); + } + + @Test + public void display_measure_filter_as_list() { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("display_measure_filter_as_list", + "/measure/measure_filters/list_change_columns.html", + "/measure/measure_filters/list_delete_column.html", + "/measure/measure_filters/list_move_columns.html", + "/measure/measure_filters/list_sort_by_descending_name.html", + "/measure/measure_filters/list_sort_by_ncloc.html" + ).build(); + orchestrator.executeSelenese(selenese); + } + + @Test + public void share_measure_filters() { + // SONAR-4099 + String user = "user-measures-filter-with-sharing-perm"; + createUser(user, "User Measure Filters with sharing permission", "shareDashboard"); + + try { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("share_measure_filters", + // SONAR-4469 + "/measure/measure_filters/should-unshare-filter-remove-other-filters-favourite.html" + ).build(); + orchestrator.executeSelenese(selenese); + + } finally { + deactivateUser(user); + } + } + + /** + * SONAR-4099 + */ + @Test + public void should_not_share_filter_when_user_have_no_sharing_permissions() { + String user = "user-measures-filter-with-no-share-perm"; + createUser(user, "User Measure Filters without sharing permission"); + + try { + orchestrator.executeSelenese(Selenese.builder().setHtmlTestsInClasspath("should_not_share_filter_when_user_have_no_sharing_permissions", + "/measure/measure_filters/should-not-share-filter-when-user-have-no-sharing-permissions.html" + ).build()); + } finally { + deactivateUser(user); + } + } + + @Test + public void copy_measure_filters() { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("copy_measure_filters", + "/measure/measure_filters/copy_measure_filter.html", + "/measure/measure_filters/copy_uniqueness_of_name.html" + ).build(); + orchestrator.executeSelenese(selenese); + } + + @Test + public void manage_measure_filters() { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("manage_measure_filters", + "/measure/measure_filters/save_with_special_characters.html" + ).build(); + orchestrator.executeSelenese(selenese); + } + + @Test + public void measure_filter_list_widget() { + Selenese selenese = Selenese.builder().setHtmlTestsInClasspath("measure_filter_list_widget", + "/measure/measure_filters/list_widget.html", + "/measure/measure_filters/list_widget_sort.html", + "/measure/measure_filters/list_widget_warning_if_missing_filter.html" + ).build(); + orchestrator.executeSelenese(selenese); + } + + private static void createUser(String login, String name) { + createUser(login, name, null); + } + + private static void createUser(String login, String name, String permission) { + SonarClient client = orchestrator.getServer().adminWsClient(); + UserParameters userCreationParameters = UserParameters.create().login(login).name(name).password("password").passwordConfirmation("password"); + client.userClient().create(userCreationParameters); + + if (permission != null) { + client.permissionClient().addPermission(PermissionParameters.create().user(login).permission(permission)); + } + } + + private static void deactivateUser(String user) { + orchestrator.getServer().adminWsClient().userClient().deactivate(user); + } + +} diff --git a/it/it-tests/src/test/java/measure/MeasuresTestSuite.java b/it/it-tests/src/test/java/measure/MeasuresTestSuite.java new file mode 100644 index 00000000000..b0761da96ea --- /dev/null +++ b/it/it-tests/src/test/java/measure/MeasuresTestSuite.java @@ -0,0 +1,36 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package measure; + +import com.sonar.orchestrator.Orchestrator; +import org.junit.ClassRule; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import util.ItUtils; + +@RunWith(Suite.class) +@Suite.SuiteClasses({}) +public class MeasuresTestSuite { + + @ClassRule + public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + .addPlugin(ItUtils.xooPlugin()) + .build(); +} diff --git a/it/it-tests/src/test/resources/measure/measure_filters/copy_measure_filter.html b/it/it-tests/src/test/resources/measure/measure_filters/copy_measure_filter.html new file mode 100644 index 00000000000..22005c9a9d6 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/copy_measure_filter.html @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>copy_measure_filter</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>storeEval</td> + <td>'list_'+(new Date()).getTime()</td> + <td>FILTER_NAME</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=login</td> + <td>admin</td> +</tr> +<tr> + <td>type</td> + <td>id=password</td> + <td>admin</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>name=commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> +</tr> +<tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>save-as-filter-form</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>${FILTER_NAME}</td> +</tr> +<tr> + <td>click</td> + <td>id=save-as-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*${FILTER_NAME}*</td> +</tr> +<tr> + <td>click</td> + <td>id=copy</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>copy-filter-form</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>copy of ${FILTER_NAME}</td> +</tr> +<tr> + <td>type</td> + <td>id=description</td> + <td>description of copy</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=copy-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*copy of ${FILTER_NAME}*</td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-description</td> + <td>*description of copy*</td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +<tr> + <td>assertSelectedLabel</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +</tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/copy_uniqueness_of_name.html b/it/it-tests/src/test/resources/measure/measure_filters/copy_uniqueness_of_name.html new file mode 100644 index 00000000000..7f6f914a8a2 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/copy_uniqueness_of_name.html @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>copy_uniqueness_of_name</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>store</td> + <td>javascript{'list_'+(new Date()).getTime()}</td> + <td>FILTER_NAME</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=login</td> + <td>admin</td> +</tr> +<tr> + <td>type</td> + <td>id=password</td> + <td>admin</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>name=commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> +</tr> +<tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>save-as-filter-form</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>${FILTER_NAME}</td> +</tr> +<tr> + <td>click</td> + <td>id=save-as-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*${FILTER_NAME}*</td> +</tr> +<tr> + <td>click</td> + <td>id=copy</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>copy-filter-form</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>${FILTER_NAME}</td> +</tr> +<tr> + <td>click</td> + <td>id=copy-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>copy-filter-form</td> + <td>*Name already exists*</td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>copy of ${FILTER_NAME}</td> +</tr> +<tr> + <td>click</td> + <td>id=copy-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*copy of ${FILTER_NAME}*</td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +<tr> + <td>assertSelectedLabel</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +</tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/empty_filter.html b/it/it-tests/src/test/resources/measure/measure_filters/empty_filter.html new file mode 100644 index 00000000000..65ebe3575ad --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/empty_filter.html @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>empty_filter</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures/search</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*No data*</td> + </tr> + <tr> + <td>assertNotText</td> + <td>measures-table</td> + <td>*Struts*</td> + </tr> + + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/initial_search_form.html b/it/it-tests/src/test/resources/measure/measure_filters/initial_search_form.html new file mode 100644 index 00000000000..863df6c057a --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/initial_search_form.html @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>initial_search_form</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>waitForText</td> + <td>class=navigator-filters</td> + <td>*More Criteria*</td> + </tr> + <tr> + <td>assertElementNotPresent</td> + <td>measures-table</td> + <td></td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/link_from_main_header.html b/it/it-tests/src/test/resources/measure/measure_filters/link_from_main_header.html new file mode 100644 index 00000000000..c92986d4489 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/link_from_main_header.html @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>link_from_main_header</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>link=Measures</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>link=Measures</td> + <td></td> + </tr> + <tr> + <td>assertLocation</td> + <td>*/measures*</td> + <td></td> + </tr> + <tr> + <td>assertElementPresent</td> + <td>class=navigator-filters</td> + <td></td> + </tr> + + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_change_columns.html b/it/it-tests/src/test/resources/measure/measure_filters/list_change_columns.html new file mode 100644 index 00000000000..b23e78ca1c4 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_change_columns.html @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>configure-table-columns</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=change-display</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>select-metric</td> + <td>Complexity</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=add-metric</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*Cmpx*</td> + </tr> + <tr> + <td>select</td> + <td>select-metric</td> + <td>Comment lines</td> + </tr> + <tr> + <td>select</td> + <td>id=select-period</td> + <td>label=since previous analysis</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=add-metric</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*Cmpx*Comment lines*last*</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=exit-edit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*Cmpx*Comment lines*last*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_delete_column.html b/it/it-tests/src/test/resources/measure/measure_filters/list_delete_column.html new file mode 100644 index 00000000000..3075d43b47e --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_delete_column.html @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>delete_column</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=change-display</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*Last Analysis*LOC*</td> + </tr> + <tr> + <td>click</td> + <td>delete-date</td> + <td></td> + </tr> + <tr> + <td>waitForText</td> + <td>measures-table</td> + <td>*Name*LOC*</td> + </tr> + <tr> + <td>assertNotText</td> + <td>measures-table</td> + <td>*Last Analysis*</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=exit-edit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*LOC*</td> + </tr> + <tr> + <td>assertNotText</td> + <td>measures-table</td> + <td>*Last Analysis*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_move_columns.html b/it/it-tests/src/test/resources/measure/measure_filters/list_move_columns.html new file mode 100644 index 00000000000..ee78b261c94 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_move_columns.html @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>move_columns</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=change-display</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Name*Last Analysis*LOC*</td> + </tr> + <tr> + <td>click</td> + <td>left-date</td> + <td></td> + </tr> + <tr> + <td>waitForText</td> + <td>measures-table</td> + <td>*Last Analysis*Name*LOC*</td> + </tr> + <tr> + <td>click</td> + <td>right-name</td> + <td></td> + </tr> + <tr> + <td>waitForText</td> + <td>measures-table</td> + <td>*Last Analysis*LOC*Name*</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=exit-edit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Last Analysis*LOC*Name*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_descending_name.html b/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_descending_name.html new file mode 100644 index 00000000000..8705a7efee2 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_descending_name.html @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>list_sort_by_descending_name</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertElementPresent</td> + <td>measures-table</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>link=Name</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*b2/HelloB2.xoo*b1/HelloB1.xoo*a2/HelloA2.xoo*a1/HelloA1.xoo*</td> + </tr> + + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_ncloc.html b/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_ncloc.html new file mode 100644 index 00000000000..95ef3b0deeb --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_sort_by_ncloc.html @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>list_sort_by_ncloc</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertElementPresent</td> + <td>measures-table</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*4 results*</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>link=LOC</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*a2/HelloA2.xoo*a1/HelloA1.xoo*b1/HelloB1.xoo*b2/HelloB2.xoo*</td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*4 results*</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>link=LOC</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*4 results*</td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*a1/HelloA1.xoo*b1/HelloB1.xoo*b2/HelloB2.xoo*a2/HelloA2.xoo*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_widget.html b/it/it-tests/src/test/resources/measure/measure_filters/list_widget.html new file mode 100644 index 00000000000..81695821706 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_widget.html @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>list_widget</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> + </tr> + <tr> + <td>open</td> + <td>/sonar/measures/manage</td> + <td></td> + </tr> + <tr> + <td>type</td> + <td>id=login</td> + <td>admin</td> + </tr> + <tr> + <td>type</td> + <td>id=password</td> + <td>admin</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>name=commit</td> + <td></td> + </tr> + + <tr> + <td>clickAndWait</td> + <td>xpath=(//table[contains(@id, 'shared-filters')]//a[contains(text(),'Projects')])</td> + <td></td> + </tr> + <tr> + <td>storeEval</td> + <td>window.location.pathname.split('/').last()</td> + <td>FILTER_ID</td> + </tr> + <tr> + <td>open</td> + <td>/sonar/widget?id=measure_filter_list&filter=${FILTER_ID}</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>block_1</td> + <td>*Name*Version*LOC*Last Analysis*</td> + </tr> + <tr> + <td>assertText</td> + <td>block_1</td> + <td>*Multi-modules Sample*1.0-SNAPSHOT*</td> + </tr> + <tr> + <td>assertNotText</td> + <td>block_1</td> + <td>*Module A*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_widget_sort.html b/it/it-tests/src/test/resources/measure/measure_filters/list_widget_sort.html new file mode 100644 index 00000000000..82b5f7e6eea --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_widget_sort.html @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>list_widget_sort</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>storeEval</td> + <td>'sort_widget_'+(new Date()).getTime()</td> + <td>FILTER_NAME</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>admin</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>admin</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>name=commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>class=navigator-filters</td> + <td>*More Criteria*</td> +</tr> +<tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>save-as-filter-form</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>name</td> + <td>${FILTER_NAME}</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=save-as-submit</td> + <td></td> +</tr> +<tr> + <td>storeEval</td> + <td>window.location.pathname.split('/').last()</td> + <td>FILTER_ID</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/widget?id=measure_filter_list&filter=${FILTER_ID}</td> + <td></td> +</tr> +<tr> + <td>assertText</td> + <td>block_1</td> + <td>*Name*LOC*</td> +</tr> +<tr> + <td>assertText</td> + <td>block_1</td> + <td>*a1/HelloA1.xoo*a2/HelloA2.xoo*b1/HelloB1.xoo*b2/HelloB2.xoo*</td> +</tr> +<tr> + <td>click</td> + <td>link=LOC</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>block_1</td> + <td>*a2/HelloA2.xoo*a1/HelloA1.xoo*b1/HelloB1.xoo*b2/HelloB2.xoo*</td> +</tr> +<tr> + <td>click</td> + <td>link=LOC</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>block_1</td> + <td>*HelloA1*HelloB1*HelloB2*HelloA2*</td> +</tr> +</tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/list_widget_warning_if_missing_filter.html b/it/it-tests/src/test/resources/measure/measure_filters/list_widget_warning_if_missing_filter.html new file mode 100644 index 00000000000..4bcd30c0ba4 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/list_widget_warning_if_missing_filter.html @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>list_widget</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/widget?id=measure_filter_list</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>block_1</td> + <td>*This widget is configured to display a measure filter that does not exist anymore.*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/save_with_special_characters.html b/it/it-tests/src/test/resources/measure/measure_filters/save_with_special_characters.html new file mode 100644 index 00000000000..19b116782e9 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/save_with_special_characters.html @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>save_with_special_characters</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + + <tbody> + <tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> + </tr> + <tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> + </tr> + <tr> + <td>type</td> + <td>login</td> + <td>admin</td> + </tr> + <tr> + <td>type</td> + <td>password</td> + <td>admin</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> + </tr> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>click</td> + <td>id=save-as</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>save-as-filter-form</td> + <td></td> + </tr> + <tr> + <td>type</td> + <td>id=name</td> + <td>special $àé'@"</td> + </tr> + <tr> + <td>type</td> + <td>id=description</td> + <td>description with special characters " ' éà</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=save-as-submit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>filter-description</td> + <td>*description with special characters " ' éà*</td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>id=manage-favorites</td> + <td></td> + </tr> + <tr> + <td>clickAndWait</td> + <td>id=manage-favorites</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>my-filters</td> + <td>*special $àé'@"*description with special characters " ' éà*</td> + </tr> + <tr> + <td>click</td> + <td>id=delete_special-ae</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>confirm-submit</td> + <td></td> + </tr> + <tr> + <td>click</td> + <td>id=confirm-submit</td> + <td></td> + </tr> + <tr> + <td>waitForNotText</td> + <td>my-filters</td> + <td>*special $àé'@"*</td> + </tr> + </tbody> +</table> +</body> +</html> + diff --git a/it/it-tests/src/test/resources/measure/measure_filters/search-by-key.html b/it/it-tests/src/test/resources/measure/measure_filters/search-by-key.html new file mode 100644 index 00000000000..50fce19e151 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/search-by-key.html @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>search-by-key</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Projects</td> + </tr> + <tr> + <td>type</td> + <td>name=keySearch</td> + <td>multi-modules</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Sonar :: Integration Tests :: Multi-modules Sample*</td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*1 results*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/search-by-name.html b/it/it-tests/src/test/resources/measure/measure_filters/search-by-name.html new file mode 100644 index 00000000000..2c4fb8c53d3 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/search-by-name.html @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>search-by-name</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Projects</td> + </tr> + <tr> + <td>type</td> + <td>name=nameSearch</td> + <td>Integration</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Sonar :: Integration Tests :: Multi-modules Sample*</td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*1 results*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/search_for_files.html b/it/it-tests/src/test/resources/measure/measure_filters/search_for_files.html new file mode 100644 index 00000000000..4e001a597c9 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/search_for_files.html @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>search_for_files</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Files</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*a1/HelloA1.xoo*a2/HelloA2.xoo*b1/HelloB1.xoo*b2/HelloB2.xoo*</td> + </tr> + <tr> + <td>assertText</td> + <td>css=#measures-table tfoot</td> + <td>*4 results*</td> + </tr> + <tr> + <td>assertNotText</td> + <td>measures-table</td> + <td>*Module A*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/search_for_projects.html b/it/it-tests/src/test/resources/measure/measure_filters/search_for_projects.html new file mode 100644 index 00000000000..c7c0e83bdb2 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/search_for_projects.html @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ SonarQube, open source software quality management tool. + ~ Copyright (C) 2008-2014 SonarSource + ~ mailto:contact AT sonarsource DOT com + ~ + ~ SonarQube is free software; you can redistribute it and/or + ~ modify it under the terms of the GNU Lesser General Public + ~ License as published by the Free Software Foundation; either + ~ version 3 of the License, or (at your option) any later version. + ~ + ~ SonarQube is distributed in the hope that it will be useful, + ~ but WITHOUT ANY WARRANTY; without even the implied warranty of + ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + ~ Lesser General Public License for more details. + ~ + ~ You should have received a copy of the GNU Lesser General Public License + ~ along with this program; if not, write to the Free Software Foundation, + ~ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + --> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>search_for_projects_by_default</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> + <tbody> + <tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> + </tr> + <tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> + </tr> + <tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Projects</td> + </tr> + <tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> + </tr> + <tr> + <td>assertElementPresent</td> + <td>measures-table</td> + <td></td> + </tr> + <tr> + <td>assertText</td> + <td>measures-table</td> + <td>*Sonar :: Integration Tests :: Multi-modules Sample*</td> + </tr> + </tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/should-not-share-filter-when-user-have-no-sharing-permissions.html b/it/it-tests/src/test/resources/measure/measure_filters/should-not-share-filter-when-user-have-no-sharing-permissions.html new file mode 100644 index 00000000000..94f85a0e3c5 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/should-not-share-filter-when-user-have-no-sharing-permissions.html @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>should_save_issue_filters</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<tbody> +<tr> + <td>storeEval</td> + <td>'filter_'+(new Date()).getTime()</td> + <td>FILTER_NAME</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>user-measures-filter-with-no-share-perm</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>password</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> +</tr> +<tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Projects</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>save-as-filter-form</td> + <td>*Save Filter*</td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>user_${FILTER_NAME}</td> +</tr> +<tr> + <td>assertNotText</td> + <td>save-as-filter-form</td> + <td>*Shared with all users*</td> +</tr> +<tr> + <td>click</td> + <td>id=save-as-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*user_${FILTER_NAME}*Private*</td> +</tr> +</tbody> +</table> +</body> +</html> diff --git a/it/it-tests/src/test/resources/measure/measure_filters/should-unshare-filter-remove-other-filters-favourite.html b/it/it-tests/src/test/resources/measure/measure_filters/should-unshare-filter-remove-other-filters-favourite.html new file mode 100644 index 00000000000..8b6fb44c4e5 --- /dev/null +++ b/it/it-tests/src/test/resources/measure/measure_filters/should-unshare-filter-remove-other-filters-favourite.html @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>should_save_issue_filters</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<tbody> +<tr> + <td>storeEval</td> + <td>'filter_'+(new Date()).getTime()</td> + <td>FILTER_NAME</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>user-measures-filter-with-sharing-perm</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>password</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>name=qualifiers[]</td> + <td></td> +</tr> +<tr> + <td>select</td> + <td>name=qualifiers[]</td> + <td>Projects</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>class=navigator-filter-submit</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>save-as-filter-form</td> + <td>*Save Filter*</td> +</tr> +<tr> + <td>type</td> + <td>id=name</td> + <td>user_${FILTER_NAME}</td> +</tr> +<tr> + <td>click</td> + <td>id=shared</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>id=save-as-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*user_${FILTER_NAME}*Shared with all users*</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>admin</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>admin</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures/manage</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>content</td> + <td>*My Measures Filters*</td> +</tr> +<tr> + <td>assertText</td> + <td>shared-filters</td> + <td>*user_${FILTER_NAME}*</td> +</tr> +<tr> + <td>click</td> + <td>id=star-user_${FILTER_NAME}</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>user-measures-filter-with-sharing-perm</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>password</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>id=manage-favorites</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=manage-favorites</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>my-filters</td> + <td>*user_${FILTER_NAME}*</td> +</tr> +<tr> + <td>click</td> + <td>id=edit_user_${FILTER_NAME}</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>edit-filter-form</td> + <td>*Edit Filter*</td> +</tr> +<tr> + <td>click</td> + <td>shared</td> + <td></td> +</tr> +<tr> + <td>clickAndWait</td> + <td>id=save-submit</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>filter-title</td> + <td>*user_${FILTER_NAME}*Private*</td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/logout</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/sessions/new</td> + <td></td> +</tr> +<tr> + <td>type</td> + <td>login</td> + <td>admin</td> +</tr> +<tr> + <td>type</td> + <td>password</td> + <td>admin</td> +</tr> +<tr> + <td>clickAndWait</td> + <td>commit</td> + <td></td> +</tr> +<tr> + <td>open</td> + <td>/sonar/measures/manage</td> + <td></td> +</tr> +<tr> + <td>waitForText</td> + <td>content</td> + <td>*My Measures Filters*</td> +</tr> +<tr> + <td>assertNotText</td> + <td>shared-filters</td> + <td>*user_${FILTER_NAME}*</td> +</tr> +</tbody> +</table> +</body> +</html> |