AbsaOSS / AbsaOSS/hyperdrive-trigger

Using pattern matchers in tests

Abierto
#796 3 comentarios 0 reacciones 0 asignados Ver en GitHub
backend refactoring
Lenguaje dominante
TypeScript
Estrellas
8
Forks
5
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## Context
In PR [https://github.com/AbsaOSS/hyperdrive-trigger/pull/791#discussion_r1130222033](https://github.com/AbsaOSS/hyperdrive-trigger/pull/791#discussion_r1130222033) we discussed with @jozefbakus an option to use pattern matching in scala test. This will reduce the boilerplate for testing that `Option`, `Try`, `Either`, or any other sum type has a good result.

Here is an actual example taken from `ChekpointServiceTest`
```scala
result.size shouldBe 2
result.head._1 shouldBe "my.topic"
result.head._2 should contain theSameElementsAs Map(2 -> 2021L, 1 -> 1021L, 3 -> 3021L, 0 -> 21L)
result.toSeq(1)._1 shouldBe "my.other.topic"
result.toSeq(1)._2 should contain theSameElementsAs Map(0 -> 0L)
```
which could be reduced to
```scala
result shouldBe Seq(
("my.topic", Map(0 -> 21L, 1 -> 1021L, 2 -> 2021L, 3 -> 3021L)),
("my.other.topic", Map(0 -> 0L))
)
```
or if we don't care about exact values, we can use `should matchPatter { case => }
```scala
val result = underTest.getLatestCommittedOffset(params)(ugi)

result.get.isDefined shouldBe true
result.get shouldBe Some(offsets)
```
which will become
```scala
result should matchPattern { case Success(Some(_)) => }
```

## Objective
* Rewrite tests to use appropriate matchers [https://www.scalatest.org/user_guide/using_matchers](https://www.scalatest.org/user_guide/using_matchers)
* Ensure that all the cases as covered as they were before refactoring

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.