-
Notifications
You must be signed in to change notification settings - Fork 18
/
ReadsOnHashKeyTablesSpec.scala
102 lines (84 loc) · 2.84 KB
/
ReadsOnHashKeyTablesSpec.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* Copyright 2012-2015 Pellucid Analytics
* Copyright 2015 Daniel W. H. James
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.onzo.dynamodb.integration
import com.github.dwhjames.awswrap.dynamodb._
import org.scalatest.{FlatSpec, Matchers}
import scala.collection.JavaConverters._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._
class ReadsOnHashKeyTableSpec
extends FlatSpec
with Matchers
with DynamoDBClient
{
import SampleData.sampleForums
override val tableNames = Seq(Forum.tableName)
val mapper = AmazonDynamoDBScalaMapper(client)
override def beforeAll(): Unit = {
super.beforeAll()
tryCreateTable(Forum.tableRequest)
awaitTableCreation(Forum.tableName)
await(30.seconds) {
mapper.batchDump(sampleForums)
}
}
"DynamoDB" should s"contain the '${Forum.tableName}' table" in {
val result = await(1.minutes) {
client.listTables()
}
result.getTableNames().asScala should contain (Forum.tableName)
}
it should "contain the first sample Forum" in {
import org.scalatest.OptionValues._
await {
mapper.loadByKey[Forum](sampleForums.head.name)
} .value should be (sampleForums.head)
val result = await {
mapper.batchLoadByKeys[Forum](Seq(sampleForums.head.name))
}
result should have size (1)
result.head should be (sampleForums.head)
}
it should s"contain ${sampleForums.size} forum items" in {
await {
mapper.countScan[Forum]()
} should equal (sampleForums.size)
}
it should s"contain the sample forum items" in {
val forumScan = await {
mapper.scan[Forum]()
}
val forumScanOnce = await {
mapper.scanOnce[Forum]()
}
val forumScanOnceLimit = await {
mapper.scanOnce[Forum](limit = sampleForums.size)
}
val forumBatch = await {
mapper.batchLoadByKeys[Forum](sampleForums map (_.name))
}
forumScan should have size (sampleForums.size.toLong)
forumScanOnce should have size (sampleForums.size.toLong)
forumScanOnceLimit should have size (sampleForums.size.toLong)
forumBatch should have size (sampleForums.size.toLong)
for (forum <- sampleForums) {
forumScan should contain (forum)
forumScanOnce should contain (forum)
forumBatch should contain (forum)
}
}
}