aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala
new file mode 100644
index 0000000..1c77a78
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala
@@ -0,0 +1,68 @@
+package xyz.driver.pdsuidomain.fakes.entities.rep
+
+
+import java.time.LocalDate
+
+import xyz.driver.core.generators
+import xyz.driver.core.generators.{nextBoolean, nextDouble, nextOption, nextString}
+import xyz.driver.pdsuicommon.domain.{TextJson, User}
+import xyz.driver.pdsuidomain.entities.{Document, DocumentType, MedicalRecord, ProviderType}
+import xyz.driver.pdsuidomain.fakes.entities.common.{nextLocalDate, nextLocalDateTime, nextLongId, nextStringId}
+
+object DocumentGen {
+ implicit private class LocalDateOrdering(localData: LocalDate)
+ extends Ordered[LocalDate] {
+
+ override def compare(that: LocalDate): Int = {
+ this.localData.compareTo(that)
+ }
+ }
+
+ def nextDocumentStatus: Document.Status =
+ generators.oneOf[Document.Status](Document.Status.All)
+
+ def nextDocumentRequiredType: Document.RequiredType =
+ generators.oneOf[Document.RequiredType](Document.RequiredType.All)
+
+ def nextDocumentMeta: Document.Meta = {
+ val (startPage, endPage) = {
+ val startPage = nextDouble()
+ val endPage = nextDouble()
+ if (startPage > endPage) {
+ endPage -> startPage
+ }
+ else {
+ startPage -> endPage
+ }
+ }
+
+ Document.Meta(
+ nextOption(nextBoolean()), startPage, endPage
+ )
+ }
+
+ def nextDocument: Document = {
+ val dates = Common
+ .genBoundedRangeOption[LocalDate](nextLocalDate, nextLocalDate)
+
+ Document(
+ id = nextLongId[Document],
+ status = nextDocumentStatus,
+ previousStatus = nextOption(nextDocumentStatus),
+ assignee = nextOption(nextStringId[User]),
+ previousAssignee = nextOption(nextStringId[User]),
+ lastActiveUserId = nextOption(nextStringId[User]),
+ recordId = nextLongId[MedicalRecord],
+ physician = nextOption(nextString()),
+ typeId = nextOption(nextLongId[DocumentType]),
+ providerName = nextOption(nextString()),
+ providerTypeId = nextOption(nextLongId[ProviderType]),
+ requiredType = nextOption(nextDocumentRequiredType),
+ meta = nextOption(TextJson(nextDocumentMeta)),
+ startDate = dates._1,
+ endDate = dates._2,
+ lastUpdate = nextLocalDateTime
+ )
+ }
+
+}