AbsaOSS / AbsaOSS/hyperdrive-trigger

Using pattern matchers in tests

未关闭
#796 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
backend refactoring
主要语言
TypeScript
星标
8
派生
5
PR 合并指标
30 天内没有已合并 PR

描述

## 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

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。