From d4edd00f0f8805f1e720b604ccbc89b85e082eab Mon Sep 17 00:00:00 2001 From: Jorge Bornhausen Date: Fri, 18 Oct 2024 21:53:42 +0200 Subject: [PATCH] added clock service module --- pom.xml | 22 ++++++++++ quarkus-clock-service/pom.xml | 16 +++++++ .../quarkus/commons/clock/ClockProducer.java | 18 ++++++++ .../quarkus/commons/clock/ClockService.java | 10 +++++ .../commons/clock/ClockServiceImpl.java | 28 ++++++++++++ .../commons/clock/ClockProducerTest.java | 24 +++++++++++ .../commons/clock/ClockServiceImplTest.java | 43 +++++++++++++++++++ quarkus-random-generator/pom.xml | 25 ----------- .../random/RandomNumberGeneratorImplTest.java | 1 - 9 files changed, 161 insertions(+), 26 deletions(-) create mode 100644 quarkus-clock-service/pom.xml create mode 100644 quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducer.java create mode 100644 quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockService.java create mode 100644 quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImpl.java create mode 100644 quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducerTest.java create mode 100644 quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImplTest.java diff --git a/pom.xml b/pom.xml index fc5d40e..0ad0f40 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,7 @@ pom + quarkus-clock-service quarkus-random-generator @@ -59,11 +60,32 @@ io.quarkus quarkus-arc + + org.assertj + assertj-core + ${assertj-core.version} + test + io.quarkus quarkus-junit5 test + + io.quarkus + quarkus-junit5-mockito + test + + + io.quarkus + quarkus-jacoco + test + + + org.mockito + mockito-junit-jupiter + test + diff --git a/quarkus-clock-service/pom.xml b/quarkus-clock-service/pom.xml new file mode 100644 index 0000000..0eee794 --- /dev/null +++ b/quarkus-clock-service/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + + ch.phoenixtechnologies.quarkus + quarkus-commons + 0.1.0-SNAPSHOT + + + quarkus-clock-service + jar + + diff --git a/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducer.java b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducer.java new file mode 100644 index 0000000..97d95fc --- /dev/null +++ b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducer.java @@ -0,0 +1,18 @@ +package ch.phoenixtechnologies.quarkus.commons.clock; + +import io.quarkus.arc.DefaultBean; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import java.time.Clock; + +class ClockProducer { + + @Produces + @DefaultBean + @ApplicationScoped + Clock produceClock() { + return Clock.systemDefaultZone(); + } + +} diff --git a/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockService.java b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockService.java new file mode 100644 index 0000000..5954727 --- /dev/null +++ b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockService.java @@ -0,0 +1,10 @@ +package ch.phoenixtechnologies.quarkus.commons.clock; + +import java.time.Instant; + +public interface ClockService { + + Instant instant(); + + long currentTimeMillis(); +} diff --git a/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImpl.java b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImpl.java new file mode 100644 index 0000000..bfe34be --- /dev/null +++ b/quarkus-clock-service/src/main/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImpl.java @@ -0,0 +1,28 @@ +package ch.phoenixtechnologies.quarkus.commons.clock; + +import io.quarkus.arc.DefaultBean; +import jakarta.enterprise.context.ApplicationScoped; + +import java.time.Clock; +import java.time.Instant; + +@DefaultBean +@ApplicationScoped +class ClockServiceImpl implements ClockService { + + private final Clock clock; + + ClockServiceImpl(Clock clock) { + this.clock = clock; + } + + @Override + public Instant instant() { + return clock.instant(); + } + + @Override + public long currentTimeMillis() { + return clock.millis(); + } +} diff --git a/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducerTest.java b/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducerTest.java new file mode 100644 index 0000000..3735ff0 --- /dev/null +++ b/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockProducerTest.java @@ -0,0 +1,24 @@ +package ch.phoenixtechnologies.quarkus.commons.clock; + +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Test; + +import java.time.Clock; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +@QuarkusTest +class ClockProducerTest { + + @Inject + Clock clock; + + @Test + void produceClock() { + assertThat(clock.getZone()) + .as("Produced clock's zone should match expected value") + .isEqualTo(Clock.systemDefaultZone().getZone()); + } +} \ No newline at end of file diff --git a/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImplTest.java b/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImplTest.java new file mode 100644 index 0000000..b7c0ff6 --- /dev/null +++ b/quarkus-clock-service/src/test/java/ch/phoenixtechnologies/quarkus/commons/clock/ClockServiceImplTest.java @@ -0,0 +1,43 @@ +package ch.phoenixtechnologies.quarkus.commons.clock; + +import io.quarkus.test.InjectMock; +import io.quarkus.test.junit.QuarkusTest; +import io.quarkus.test.junit.mockito.InjectSpy; +import jakarta.inject.Inject; +import org.junit.jupiter.api.Test; + +import java.time.Clock; +import java.time.Instant; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@QuarkusTest +class ClockServiceImplTest { + + @Inject + ClockService clockService; + + @InjectMock + Clock clock; + + @Test + void instant() { + var expected = Instant.ofEpochMilli(1729280640915L); + when(clock.instant()).thenReturn(expected); + + assertThat(clockService.instant()) + .as("Instant should match expected value") + .isEqualTo(expected); + } + + @Test + void currentTimeMillis() { + var expected = 1729280640915L; + when(clock.millis()).thenReturn(expected); + + assertThat(clockService.currentTimeMillis()) + .as("Instant should match expected value") + .isEqualTo(expected); + } +} \ No newline at end of file diff --git a/quarkus-random-generator/pom.xml b/quarkus-random-generator/pom.xml index 5f75438..6313df2 100644 --- a/quarkus-random-generator/pom.xml +++ b/quarkus-random-generator/pom.xml @@ -20,31 +20,6 @@ java-uuid-generator ${java-uuid-generator.version} - - org.assertj - assertj-core - ${assertj-core.version} - - - io.quarkus - quarkus-junit5-component - test - - - io.quarkus - quarkus-junit5-mockito - test - - - io.quarkus - quarkus-jacoco - test - - - org.mockito - mockito-junit-jupiter - test - diff --git a/quarkus-random-generator/src/test/java/ch/phoenixtechnologies/quarkus/commons/random/RandomNumberGeneratorImplTest.java b/quarkus-random-generator/src/test/java/ch/phoenixtechnologies/quarkus/commons/random/RandomNumberGeneratorImplTest.java index 8c09a7a..1069a60 100644 --- a/quarkus-random-generator/src/test/java/ch/phoenixtechnologies/quarkus/commons/random/RandomNumberGeneratorImplTest.java +++ b/quarkus-random-generator/src/test/java/ch/phoenixtechnologies/quarkus/commons/random/RandomNumberGeneratorImplTest.java @@ -1,6 +1,5 @@ package ch.phoenixtechnologies.quarkus.commons.random; -import io.quarkus.test.component.QuarkusComponentTest; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.mockito.InjectSpy; import jakarta.inject.Inject;