-
Notifications
You must be signed in to change notification settings - Fork 4
/
AbstractRuleSpec.scala
29 lines (25 loc) · 979 Bytes
/
AbstractRuleSpec.scala
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
package com.gilt.thehand
import org.scalatest.FlatSpec
import com.gilt.thehand.test.RuleTester
/**
* This is a trait that can be used to test custom rules in a comprehensive manner. All classes that inherit from this
* trait should call the 'runTests' method with a Map of Rules to a tuple containing two lists: the first a list of
* contexts that should match the rule, the second a list of contexts that should not match the rule. See @LongInSpec
* for an example.
*/
class AbstractRuleSpec extends FlatSpec with RuleTester {
val parser: AbstractRuleParser = DefaultParser
def runTestsInFramework(tests: Map[String, Map[String, () => Unit]]) {
tests foreach { case (groupName, tests) =>
val (firstTestDescription, firstTest) = tests.head
groupName should firstTestDescription in {
firstTest()
}
tests.tail.foreach { case ((description, test)) =>
it should description in {
test()
}
}
}
}
}