1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
package xyz.driver.pdsuidomain.formats.json
/*
import java.time.LocalDateTime
import org.scalatest.FreeSpecLike
import play.api.libs.json.Json
import scala.collection.breakOut
class ApiDocumentSuite extends FreeSpecLike {
"ApiDocument" - {
"conforms to specification when serialized" in {
val document = ApiDocument(
id = 1L,
recordId = 123L,
physician = Some("physician"),
lastUpdate = LocalDateTime.now(),
`type` = "some-type",
startDate = LocalDateTime.now(),
endDate = Some(LocalDateTime.now()),
provider = "test-provider",
providerType = "test-provider-type",
status = "New",
assignee = Some(5L),
previousAssignee = None,
meta = "{}"
)
val actualJson = serialize(document)
val matcher =
"""^\{
|"id":"[^"]+",
|"recordId":"[^"]+",
|"physician":"[^"]+",
|"lastUpdate":"[^"]+",
|"type":"[^"]+",
|"startDate":"[^"]+",
|"endDate":"[^"]+",
|"provider":"[^"]+",
|"providerType":"[^"]+",
|"status":"[^"]+",
|"assignee":"[^"]+",
|"meta":\{[^\}]*\}
|\}""".stripMargin.lines.mkString.r
assert(
matcher.pattern.matcher(actualJson).matches(),
s"""see https://driverinc.atlassian.net/wiki/display/RA/REST+API+Specification#RESTAPISpecification-DocumentObject
|pattern = ${matcher.pattern}
|json = $actualJson""".stripMargin
)
}
"has optional fields according to specification" in {
val expectedOptionalFields = Set("physician", "endDate", "assignee", "previousAssignee")
val klass = classOf[ApiDocument]
val actualOptionalFields: Set[String] = klass.getDeclaredFields.collect({
case x if x.getType == classOf[Option[_]] => x.getName
})(breakOut)
assert(
actualOptionalFields === expectedOptionalFields,
"""actual vs expected
|see https://driverinc.atlassian.net/wiki/display/RA/REST+API+Specification#RESTAPISpecification-DocumentObject
""".stripMargin.trim
)
}
}
private def serialize(document: ApiDocument): String = {
Json.stringify(Json.toJson(document))
}
}
*/
|