Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
holotsvan committed Dec 5, 2024
1 parent a5831af commit b2935d2
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import static greencity.utils.NotificationUtils.resolveTimesInEnglish;
import static greencity.utils.NotificationUtils.resolveTimesInUkrainian;

@Slf4j
@Service
Expand Down Expand Up @@ -384,28 +386,4 @@ private ScheduledEmailMessage createScheduledEmailMessage(Notification notificat
private String createBaseLink(Notification notification) {
return clientAddress + "/#/profile/" + notification.getTargetUser().getId() + "/notifications";
}

private String resolveTimesInEnglish(final int number) {
return switch (number) {
case 1 -> "";
case 2 -> "twice";
default -> number + " times";
};
}

private String resolveTimesInUkrainian(int number) {
number = Math.abs(number);
final int lastTwoDigits = number % 100;
final int lastDigit = number % 10;

if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
return number + " разів";
}

return switch (lastDigit) {
case 1 -> "";
case 2, 3, 4 -> number + " рази";
default -> number + " разів";
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
import java.util.Locale;
import java.util.Optional;
import java.util.ResourceBundle;
import static greencity.utils.NotificationUtils.resolveTimesInEnglish;
import static greencity.utils.NotificationUtils.resolveTimesInUkrainian;

/**
* Implementation of {@link UserNotificationService}.
Expand Down Expand Up @@ -379,30 +381,6 @@ private NotificationDto createNotificationDto(Notification notification, String
return dto;
}

private String resolveTimesInEnglish(final int number) {
return switch (number) {
case 1 -> "";
case 2 -> "twice";
default -> number + " times";
};
}

private String resolveTimesInUkrainian(int number) {
number = Math.abs(number);
final int lastTwoDigits = number % 100;
final int lastDigit = number % 10;

if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
return number + " разів";
}

return switch (lastDigit) {
case 1 -> "";
case 2, 3, 4 -> number + " рази";
default -> number + " разів";
};
}

/**
* Sends a new notification to a specified user.
*
Expand Down
31 changes: 31 additions & 0 deletions service/src/main/java/greencity/utils/NotificationUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package greencity.utils;

public class NotificationUtils {
public static String resolveTimesInEnglish(final int number) {
return switch (number) {
case 1 -> "";
case 2 -> "twice";
default -> number + " times";
};
}

public static String resolveTimesInUkrainian(int number) {
number = Math.abs(number);
final int lastTwoDigits = number % 100;
final int lastDigit = number % 10;

if (number == 1) {
return "";
}

if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {
return number + " разів";
}

return switch (lastDigit) {
case 1 -> number + " раз";
case 2, 3, 4 -> number + " рази";
default -> number + " разів";
};
}
}
51 changes: 51 additions & 0 deletions service/src/test/java/greencity/utils/NotificationUtilsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package greencity.utils;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;

class NotificationUtilsTest {
@ParameterizedTest(name = "Test resolveTimeInUkrainian with input {0}")
@MethodSource("provideUkrainianTestCases")
void testResolveTimeInUkrainian(int input, String expected) {
String result = NotificationUtils.resolveTimesInUkrainian(input);
assertEquals(expected, result);
}

private static Stream<Arguments> provideUkrainianTestCases() {
return Stream.of(
Arguments.of(1, ""),
Arguments.of(2, "2 рази"),
Arguments.of(4, "4 рази"),
Arguments.of(5, "5 разів"),
Arguments.of(11, "11 разів"),
Arguments.of(19, "19 разів"),
Arguments.of(21, "21 раз"),
Arguments.of(22, "22 рази"),
Arguments.of(25, "25 разів"),
Arguments.of(100, "100 разів"),
Arguments.of(101, "101 раз"),
Arguments.of(102, "102 рази"),
Arguments.of(112, "112 разів"),
Arguments.of(123, "123 рази"));
}

@ParameterizedTest(name = "Test resolveTimesInEnglish with input {0}")
@MethodSource("provideEnglishTestCases")
void testResolveTimesInEnglish(int input, String expected) {
String result = NotificationUtils.resolveTimesInEnglish(input);
assertEquals(expected, result);
}

private static Stream<Arguments> provideEnglishTestCases() {
return Stream.of(
Arguments.of(1, ""),
Arguments.of(2, "twice"),
Arguments.of(3, "3 times"),
Arguments.of(5, "5 times"),
Arguments.of(11, "11 times"),
Arguments.of(21, "21 times"));
}
}

0 comments on commit b2935d2

Please sign in to comment.