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.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /*
  2. * SonarQube
  3. * Copyright (C) 2009-2022 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. @RunWith(DataProviderRunner.class)
  30. public class CeTaskTest {
  31. private CeTask.Builder underTest = new CeTask.Builder();
  32. @Test
  33. @UseDataProvider("oneAndOnlyOneOfComponentAndMainComponent")
  34. public void build_fails_with_IAE_if_only_one_of_component_and_main_component_is_non_null(CeTask.Component component, CeTask.Component mainComponent) {
  35. underTest.setType("TYPE_1");
  36. underTest.setUuid("UUID_1");
  37. underTest.setComponent(component);
  38. underTest.setMainComponent(mainComponent);
  39. assertThatThrownBy(() -> underTest.build())
  40. .isInstanceOf(IllegalArgumentException.class)
  41. .hasMessage("None or both component and main component must be non null");
  42. }
  43. @DataProvider
  44. public static Object[][] oneAndOnlyOneOfComponentAndMainComponent() {
  45. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  46. return new Object[][] {
  47. {component, null},
  48. {null, component}
  49. };
  50. }
  51. @Test
  52. public void verify_getters() {
  53. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  54. CeTask.Component mainComponent = new CeTask.Component("MAIN_COMPONENT_UUID_1", "MAIN_COMPONENT_KEY_1", "The main component");
  55. CeTask.User submitter = new CeTask.User("UUID_USER_1", "LOGIN_1");
  56. underTest.setType("TYPE_1");
  57. underTest.setUuid("UUID_1");
  58. underTest.setSubmitter(submitter);
  59. underTest.setComponent(component);
  60. underTest.setMainComponent(mainComponent);
  61. underTest.setCharacteristics(ImmutableMap.of("k1", "v1", "k2", "v2"));
  62. CeTask task = underTest.build();
  63. assertThat(task.getUuid()).isEqualTo("UUID_1");
  64. assertThat(task.getType()).isEqualTo("TYPE_1");
  65. assertThat(task.getSubmitter()).isEqualTo(submitter);
  66. assertThat(task.getComponent()).contains(component);
  67. assertThat(task.getMainComponent()).contains(mainComponent);
  68. assertThat(task.getCharacteristics())
  69. .hasSize(2)
  70. .containsEntry("k1", "v1")
  71. .containsEntry("k2", "v2");
  72. }
  73. @Test
  74. public void verify_toString() {
  75. CeTask.Component component = new CeTask.Component("COMPONENT_UUID_1", "COMPONENT_KEY_1", "The component");
  76. CeTask.Component mainComponent = new CeTask.Component("MAIN_COMPONENT_UUID_1", "MAIN_COMPONENT_KEY_1", "The main component");
  77. underTest.setType("TYPE_1");
  78. underTest.setUuid("UUID_1");
  79. underTest.setComponent(component);
  80. underTest.setMainComponent(mainComponent);
  81. underTest.setSubmitter(new CeTask.User("UUID_USER_1", "LOGIN_1"));
  82. underTest.setCharacteristics(ImmutableMap.of("k1", "v1", "k2", "v2"));
  83. CeTask task = underTest.build();
  84. System.out.println(task.toString());
  85. assertThat(task).hasToString("CeTask{" +
  86. "type=TYPE_1, " +
  87. "uuid=UUID_1, " +
  88. "component=Component{uuid='COMPONENT_UUID_1', key='COMPONENT_KEY_1', name='The component'}, " +
  89. "mainComponent=Component{uuid='MAIN_COMPONENT_UUID_1', key='MAIN_COMPONENT_KEY_1', name='The main component'}, " +
  90. "submitter=User{uuid='UUID_USER_1', login='LOGIN_1'}" +
  91. "}");
  92. }
  93. @Test
  94. public void empty_in_submitterLogin_is_considered_as_null() {
  95. CeTask ceTask = underTest.setUuid("uuid").setType("type")
  96. .setSubmitter(new CeTask.User("USER_ID", ""))
  97. .build();
  98. assertThat(ceTask.getSubmitter().getLogin()).isNull();
  99. }
  100. @Test
  101. public void equals_and_hashCode_on_uuid() {
  102. underTest.setType("TYPE_1").setUuid("UUID_1");
  103. CeTask task1 = underTest.build();
  104. CeTask task1bis = underTest.build();
  105. CeTask task2 = new CeTask.Builder().setType("TYPE_1").setUuid("UUID_2").build();
  106. assertThat(task1.equals(task1)).isTrue();
  107. assertThat(task1.equals(task1bis)).isTrue();
  108. assertThat(task1.equals(task2)).isFalse();
  109. assertThat(task1)
  110. .hasSameHashCodeAs(task1)
  111. .hasSameHashCodeAs(task1bis);
  112. }
  113. @Test
  114. public void setCharacteristics_null_is_considered_as_empty() {
  115. CeTask task = underTest.setType("TYPE_1").setUuid("UUID_1")
  116. .setCharacteristics(null)
  117. .build();
  118. assertThat(task.getCharacteristics()).isEmpty();
  119. }
  120. @Test
  121. public void verify_submitter_getters() {
  122. CeTask.User user = new CeTask.User("UUID", "LOGIN");
  123. assertThat(user.getUuid()).isEqualTo("UUID");
  124. assertThat(user.getLogin()).isEqualTo("LOGIN");
  125. }
  126. @Test
  127. public void submitter_equals_and_hashCode_on_uuid() {
  128. CeTask.User user1 = new CeTask.User("UUID_1", null);
  129. CeTask.User user1bis = new CeTask.User("UUID_1", null);
  130. CeTask.User user2 = new CeTask.User("UUID_2", null);
  131. CeTask.User user1_diff_login = new CeTask.User("UUID_1", "LOGIN");
  132. assertThat(user1.equals(null)).isFalse();
  133. assertThat(user1)
  134. .isEqualTo(user1)
  135. .isEqualTo(user1bis)
  136. .isNotEqualTo(user2)
  137. .hasSameHashCodeAs(user1)
  138. .hasSameHashCodeAs(user1bis)
  139. .hasSameHashCodeAs(user1_diff_login);
  140. }
  141. }