You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CeTaskTest.java 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2021 SonarSource SA
  4. * mailto:info AT sonarsource DOT com
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 3 of the License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public License
  17. * along with this program; if not, write to the Free Software Foundation,
  18. * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  19. */
  20. package org.sonar.ce.task;
  21. import com.google.common.collect.ImmutableMap;
  22. import com.tngtech.java.junit.dataprovider.DataProvider;
  23. import com.tngtech.java.junit.dataprovider.DataProviderRunner;
  24. import com.tngtech.java.junit.dataprovider.UseDataProvider;
  25. import org.junit.Test;
  26. import org.junit.runner.RunWith;
  27. import static org.assertj.core.api.Assertions.assertThat;
  28. import static org.assertj.core.api.Assertions.assertThatThrownBy;
  29. import static org.assertj.core.api.Assertions.entry;
  30. @RunWith(DataProviderRunner.class)
  31. public class CeTaskTest {
  32. private CeTask.Builder underTest = new CeTask.Builder();
  33. @Test
  34. @UseDataProvider("oneAndOnlyOneOfComponentAndMainComponent")
  35. public void build_fails_with_IAE_if_only_one_of_component_and_main_component_is_non_null(CeTask.Component component, CeTask.Component mainComponent) {
  36. underTest.setType("TYPE_1");
  37. underTest.setUuid("UUID_1");
  38. underTest.setComponent(component);
  39. underTest.setMainComponent(mainComponent);
  40. assertThatThrownBy(() -> underTest.build())
  41. .isInstanceOf(IllegalArgumentException.class)
  42. .hasMessage("None or both component and main component must be non null");
  43. }
  44. @DataProvider
  45. public static Object[][] oneAndOnlyOneOfComponentAndMainComponent() {
  46. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  47. return new Object[][] {
  48. {component, null},
  49. {null, component}
  50. };
  51. }
  52. @Test
  53. public void verify_getters() {
  54. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  55. CeTask.Component mainComponent = new CeTask.Component("MAIN_COMPONENT_UUID_1", "MAIN_COMPONENT_KEY_1", "The main component");
  56. CeTask.User submitter = new CeTask.User("UUID_USER_1", "LOGIN_1");
  57. underTest.setType("TYPE_1");
  58. underTest.setUuid("UUID_1");
  59. underTest.setSubmitter(submitter);
  60. underTest.setComponent(component);
  61. underTest.setMainComponent(mainComponent);
  62. underTest.setCharacteristics(ImmutableMap.of("k1", "v1", "k2", "v2"));
  63. CeTask task = underTest.build();
  64. assertThat(task.getUuid()).isEqualTo("UUID_1");
  65. assertThat(task.getType()).isEqualTo("TYPE_1");
  66. assertThat(task.getSubmitter()).isEqualTo(submitter);
  67. assertThat(task.getComponent()).contains(component);
  68. assertThat(task.getMainComponent()).contains(mainComponent);
  69. assertThat(task.getCharacteristics()).containsExactly(entry("k1", "v1"), entry("k2", "v2"));
  70. }
  71. @Test
  72. public void verify_toString() {
  73. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  74. CeTask.Component mainComponent = new CeTask.Component("MAIN_COMPONENT_UUID_1", "MAIN_COMPONENT_KEY_1", "The main component");
  75. underTest.setType("TYPE_1");
  76. underTest.setUuid("UUID_1");
  77. underTest.setComponent(component);
  78. underTest.setMainComponent(mainComponent);
  79. underTest.setSubmitter(new CeTask.User("UUID_USER_1", "LOGIN_1"));
  80. underTest.setCharacteristics(ImmutableMap.of("k1", "v1", "k2", "v2"));
  81. CeTask task = underTest.build();
  82. System.out.println(task.toString());
  83. assertThat(task).hasToString("CeTask{" +
  84. "type=TYPE_1, " +
  85. "uuid=UUID_1, " +
  86. "component=Component{uuid='COMPONENT_UUID_1', key='COMPONENT_KEY_1', name='The component'}, " +
  87. "mainComponent=Component{uuid='MAIN_COMPONENT_UUID_1', key='MAIN_COMPONENT_KEY_1', name='The main component'}, " +
  88. "submitter=User{uuid='UUID_USER_1', login='LOGIN_1'}" +
  89. "}");
  90. }
  91. @Test
  92. public void empty_in_submitterLogin_is_considered_as_null() {
  93. CeTask ceTask = underTest.setUuid("uuid").setType("type")
  94. .setSubmitter(new CeTask.User("USER_ID", ""))
  95. .build();
  96. assertThat(ceTask.getSubmitter().getLogin()).isNull();
  97. }
  98. @Test
  99. public void equals_and_hashCode_on_uuid() {
  100. underTest.setType("TYPE_1").setUuid("UUID_1");
  101. CeTask task1 = underTest.build();
  102. CeTask task1bis = underTest.build();
  103. CeTask task2 = new CeTask.Builder().setType("TYPE_1").setUuid("UUID_2").build();
  104. assertThat(task1.equals(task1)).isTrue();
  105. assertThat(task1.equals(task1bis)).isTrue();
  106. assertThat(task1.equals(task2)).isFalse();
  107. assertThat(task1)
  108. .hasSameHashCodeAs(task1)
  109. .hasSameHashCodeAs(task1bis);
  110. }
  111. @Test
  112. public void setCharacteristics_null_is_considered_as_empty() {
  113. CeTask task = underTest.setType("TYPE_1").setUuid("UUID_1")
  114. .setCharacteristics(null)
  115. .build();
  116. assertThat(task.getCharacteristics()).isEmpty();
  117. }
  118. @Test
  119. public void verify_submitter_getters() {
  120. CeTask.User user = new CeTask.User("UUID", "LOGIN");
  121. assertThat(user.getUuid()).isEqualTo("UUID");
  122. assertThat(user.getLogin()).isEqualTo("LOGIN");
  123. }
  124. @Test
  125. public void submitter_equals_and_hashCode_on_uuid() {
  126. CeTask.User user1 = new CeTask.User("UUID_1", null);
  127. CeTask.User user1bis = new CeTask.User("UUID_1", null);
  128. CeTask.User user2 = new CeTask.User("UUID_2", null);
  129. CeTask.User user1_diff_login = new CeTask.User("UUID_1", "LOGIN");
  130. assertThat(user1.equals(null)).isFalse();
  131. assertThat(user1)
  132. .isEqualTo(user1)
  133. .isEqualTo(user1bis)
  134. .isNotEqualTo(user2)
  135. .hasSameHashCodeAs(user1)
  136. .hasSameHashCodeAs(user1bis)
  137. .hasSameHashCodeAs(user1_diff_login);
  138. }
  139. }