//设置package包名称以及导入依赖的类
package classifier
import formatter.{Category, Formatter, LineItem}
import org.scalatest.{FunSpec, GivenWhenThen, PrivateMethodTester}
import org.mockito.Mockito.when
import org.scalatest.mockito.MockitoSugar
class ClassifierTester extends FunSpec
with GivenWhenThen with MockitoSugar with PrivateMethodTester {
describe ("A Classifier object") {
val mockDbFormatter: Formatter[Category] = mock[Formatter[Category]]
val mockStatFormatter: Formatter[LineItem] = mock[Formatter[LineItem]]
when(mockDbFormatter.format()).thenReturn(Array(
Category(1,"SOME SUPERMARKET SALE #","Groceries"),
Category(2,"A-BANK HOUSEPMNT Ref","Mortgage"),
Category(3,"VIDEOGAMELAND","Leisure")))
when(mockStatFormatter.format()).thenReturn(
Array(
new LineItem("25/07/2010","25/07/2010","FPI ","Bank","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",10000.01,2),
new LineItem("25/07/2010","25/07/2010","CPT ","Bank","BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",-2000.2),
new LineItem("22/07/2010","22/07/2010","CCard","1391","CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",-300.23),
new LineItem("21/07/2010","21/07/2010","CCard","1392","DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",-500.63,3),
new LineItem("19/07/2010","19/07/2010","TFR ","Bank","EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE",-1200),
new LineItem("18/07/2010","18/07/2010","FPO ","Bank","FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",-1800.56,4),
new LineItem("15/07/2010","15/07/2010","DD ","Bank","GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",-3700),
new LineItem("01/07/2010","01/07/2010","FEE ","Bank","HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",-1200.95,5)
)
)
val classifier = Classifier()
it(
"""should return a tuple with one collection of
| classified, and one with unclassified, LineItems""".stripMargin) {
Given("""immutable collections returned by the
| format() method of the DbCatFormatter and
| Bank and/or CreditCardFormatter dependency""".stripMargin)
When("the classify method is invoked")
val tuple = classifier.classify(mockDbFormatter.format(),mockStatFormatter.format())
Then(
"""a tuple containing classified and unclassified
| items should be returned
| """.stripMargin)
assert(tuple._1.nonEmpty)
assert(tuple._1.exists(_.catKey != 0))
assert(tuple._2.nonEmpty)
assert(tuple._2.exists(_.catKey == 0))
}
}
}
请发表评论