-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathdynamodb.spec.js
104 lines (95 loc) · 2.23 KB
/
dynamodb.spec.js
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
103
104
import { calc } from '@/lib/calc/dynamodb'
import { MONTHLY_HOURS } from '@/config/constants'
describe('dynamodb', () => {
test('DynamoDBの料金を計算できる', () => {
const priceList = {
dynamodb: {
storage: {
priceRange: [
{
beginRange: 0,
endRange: 25,
price: 0
},
{
beginRange: 25,
endRange: null,
price: 0.3
}
]
},
provisioning: {
wcu: {
priceRange: [
{
beginRange: 0,
endRange: 18600,
price: 0
},
{
beginRange: 18600,
endRange: null,
price: 0.01
}
]
},
rcu: {
priceRange: [
{
beginRange: 0,
endRange: 18600,
price: 0
},
{
beginRange: 18600,
endRange: null,
price: 0.02
}
]
}
},
ondemand: {
write: {
price: 0.0000014
},
read: {
price: 0.00000028
}
}
}
}
const emptyRow = {
mode: 'プロビジョン済み',
storage: 0,
wcu: 0,
rcu: 0
}
expect(calc(emptyRow, priceList)).toBe(0)
{
const row = {
mode: 'プロビジョン済み',
storage: 50,
wcu: 100,
rcu: 200
}
const storage = (50 - 25) * 0.3
const wcu = (100 * MONTHLY_HOURS - 18600) * 0.01
const rcu = (200 * MONTHLY_HOURS - 18600) * 0.02
const expected = storage + wcu + rcu
expect(calc(row, priceList)).toBe(expected)
}
{
const row = {
mode: 'オンデマンド',
storage: 100,
write: 1000 * 10000,
read: 2000 * 10000
}
const storage = (100 - 25) * 0.3
const write = 1000 * 10000 * 0.0000014
const read = 2000 * 10000 * 0.00000028
const expected = storage + write + read
expect(calc(row, priceList)).toBe(expected)
}
})
})