Skip to content
Snippets Groups Projects
Commit 92fd25a0 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3778 add algorithm to compute vorgang nummer

parent 632bc405
Branches
Tags
No related merge requests found
package de.itvsh.kop.eingang.formcycle;
import java.time.Instant;
import java.time.LocalDate;
public class VorgangNummerSupplier {
static final String BASE30_ALPHABET = "23456789ABCDEFGHJKMNPQRSTVWXYZ";
static final int SUFFIX_LENGTH = 6;
public String get() {
var resultBuilder = addPrefix(new StringBuilder());
long currentTimeSeconds = Instant.now().getEpochSecond();
for (int i = 0; i < SUFFIX_LENGTH; i++) {
resultBuilder.append(BASE30_ALPHABET.charAt((int) currentTimeSeconds % 30));
currentTimeSeconds /= 30;
}
return resultBuilder.toString();
}
StringBuilder addPrefix(StringBuilder resultBuilder) {
var today = LocalDate.now();
var lastYearNumber = today.getYear() % 10;
var monthValue = "%02d".formatted(today.getMonthValue());
var dayValue = "%02d".formatted(today.getDayOfMonth());
return resultBuilder.append(lastYearNumber).append(monthValue).append(dayValue).append("-");
}
}
package de.itvsh.kop.eingang.formcycle;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.time.LocalDate;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Spy;
class VorgangNummerSupplierTest {
@Spy
private VorgangNummerSupplier vorgangNummerSupplier = new VorgangNummerSupplier();
@Nested
@DisplayName("Get Vorgang Nummer")
class TestGetVorgangNummer {
@Test
void shouldCallAddPrefix() {
vorgangNummerSupplier.get();
verify(vorgangNummerSupplier).addPrefix(any());
}
@Test
@DisplayName("should add random suffix of length 6")
void shouldAddSuffix() {
doReturn(new StringBuilder()).when(vorgangNummerSupplier).addPrefix(any());
var result = vorgangNummerSupplier.get();
assertThat(result).hasSize(6);
}
}
@Nested
class TestAddPrefix{
@Test
void shouldHaveSize(){
var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
assertThat(resultBuilder).hasSize(6);
}
@Test
void shouldAddLastYearNumberFirst(){
var lastYearNumber = "" + LocalDate.now().getYear() % 10;
var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
assertThat(resultBuilder.substring(0,1)).isEqualTo(lastYearNumber);
}
@Test
void shouldAddMonthValueSecond(){
var monthValue = "%02d".formatted(LocalDate.now().getMonthValue());
var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
assertThat(resultBuilder.substring(1, 3)).isEqualTo(monthValue);
}
@Test
void shouldAddDayValueThird(){
var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth());
var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
assertThat(resultBuilder.substring(3, 5)).isEqualTo(dayValue);
}
@Test
void shouldAddHyphenAtEnd(){
var resultBuilder = vorgangNummerSupplier.addPrefix(new StringBuilder());
assertThat(resultBuilder.charAt(5)).isEqualTo('-');
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment