Skip to content

Commit

Permalink
test: consolidate partially redundant error handling tests #46
Browse files Browse the repository at this point in the history
ohsome-contributions-stats-service: 'Consider introducing 'Jakarta Bean validation' standard '
#46
  • Loading branch information
mmerdes committed Feb 7, 2024
1 parent b945140 commit 8d6352f
Showing 1 changed file with 10 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,47 +84,6 @@ class StatsControllerMVCTests {
}


//TODO: more controller actions? topic actions?
//TODO: check redundancy with other tests
@ParameterizedTest
@ValueSource(
strings = [
"/stats/missingmaps/interval?interval=bad_interval"
]
)
fun `all requests with bad ISO interval throw error`(url: String) {

val expectedErrorMessage = """[{"message":"Invalid ISO8601 string as interval.","invalidValue":"bad_interval"}]"""

val GET = get(url)

this.mockMvc
.perform(GET)
.andExpect(status().isBadRequest)
.andExpect(content().string(expectedErrorMessage))
}

//TODO: more controller actions? topic actions?
//TODO: check redundancy with other tests
@ParameterizedTest
@ValueSource(
strings = [
"/stats/missingmaps/interval?interval=PT1S"
]
)
fun `all requests with ISO interval less than 1 minute throw error`(url: String) {

val expectedErrorMessage = """[{"message":"Interval must not be under 1 minute.","invalidValue":"PT1S"}]"""

val GET = get(url)

this.mockMvc
.perform(GET)
.andExpect(status().isBadRequest)
.andExpect(content().string(expectedErrorMessage))
}


@Test
fun `stats can be served without explicit timespans`() {
`when`(this.statsService.getStatsForTimeSpan(matches(hashtag), any(), any(), anyList()))
Expand Down Expand Up @@ -265,26 +224,35 @@ class StatsControllerMVCTests {
@Test
fun `stats per interval throws error for invalid interval string`() {

val expectedErrorMessage = """[{"message":"Invalid ISO8601 string as interval.","invalidValue":"bad_interval"}]"""

val GET = get("/stats/$hashtag/interval")
.queryParam("startdate", "2017-10-01T04:00:00Z")
.queryParam("enddate", "2020-10-01T04:00:00Z")
.queryParam("interval", "ErrorString")
.queryParam("interval", "bad_interval")

this.mockMvc.perform(GET)
.andExpect(status().isBadRequest)
.andExpect(content().string(expectedErrorMessage))

}


@Test
fun `stats per interval throws error for interval under one Minute`() {

val expectedErrorMessage = """[{"message":"Interval must not be under 1 minute.","invalidValue":"PT1S"}]"""


val GET = get("/stats/$hashtag/interval")
.queryParam("startdate", "2017-10-01T04:00:00Z")
.queryParam("enddate", "2020-10-01T04:00:00Z")
.queryParam("interval", "PT1S")

this.mockMvc.perform(GET)
.andExpect(status().isBadRequest)
.andExpect(content().string(expectedErrorMessage))

}


Expand Down

0 comments on commit 8d6352f

Please sign in to comment.