-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathItemViewRepositoryTest.java
150 lines (120 loc) · 6.66 KB
/
ItemViewRepositoryTest.java
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.miw.gildedroseexpands.surgetracking;
import com.miw.gildedroseexpands.entity.surgetracking.support.ItemViewDB;
import com.miw.gildedroseexpands.entity.surgetracking.support.ItemViewRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.Instant;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* tests the ItemViewRepository.
* These methods are all provided by Spring/JPA, so just quick tests.
*/
@RunWith(SpringRunner.class)
@DataJpaTest
public class ItemViewRepositoryTest {
@Autowired
private ItemViewRepository itemViewRepository;
@Test
public void test_findByItemName_nodata() {
List<ItemViewDB> result = itemViewRepository.findByItemName("DOES NOT EXIST");
assertEquals(0, result.size());
}
/**
* quick test to make sure that that #findByItemName() is filtering correctly
*/
@Test
public void test_findByItemName_filtersCorrectly() {
Instant instant = Instant.parse("2019-03-25T10:00:00.00Z");
ItemViewDB inventoryItemDB = new ItemViewDB("itemname", instant);
ItemViewDB inventoryItemDB2 = new ItemViewDB("itemname", instant);
ItemViewDB inventoryItemDB3 = new ItemViewDB("OTHER_ITEM_NAME", instant);
inventoryItemDB = itemViewRepository.save(inventoryItemDB);
inventoryItemDB2 = itemViewRepository.save(inventoryItemDB2);
inventoryItemDB3 = itemViewRepository.save(inventoryItemDB3);
List<ItemViewDB> result = itemViewRepository.findByItemName("itemname");
assertEquals(2, result.size());
result = itemViewRepository.findByItemName("OTHER_ITEM_NAME");
assertEquals(1, result.size());
}
/**
* quick test to ensure that countByItemNameAndTimeViewedGreaterThanEqual() is filtering correctly
*/
@Test
public void test_countByItemNameAndTimeViewedGreaterThanEqual_filtersCorrectly() {
Instant instant = Instant.parse("2019-03-25T10:00:00.00Z");
Instant instant2 = Instant.parse("2019-03-25T11:00:00.00Z");
Instant instant3 = Instant.parse("2019-03-25T12:00:00.00Z");
ItemViewDB inventoryItemDB = new ItemViewDB("itemname", instant);
ItemViewDB inventoryItemDB2 = new ItemViewDB("itemname", instant2);
ItemViewDB inventoryItemDB3 = new ItemViewDB("OTHER_ITEM_NAME", instant3);
itemViewRepository.save(inventoryItemDB);
itemViewRepository.save(inventoryItemDB2);
itemViewRepository.save(inventoryItemDB3);
long result = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant);
assertEquals(2, result);
result = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant2);
assertEquals(1, result);
result = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant3);
assertEquals(0, result);
}
/**
* quick test to make sure that removeByItemNameAndTimeViewedLessThan is removing correctly.
* We test by setting up some test data, then slowly moving forward in time, deleting old
* entries. We check that the expected # of deletes are correct and that the query returns
* the correct number of entries.
* <p>
* finally, we verify that the other time hasn't been modified.
*/
@Test
public void test_removeByItemNameAndTimeViewedLessThan_correctlyRemoves() {
Instant instant0 = Instant.parse("2019-03-25T09:00:00.00Z"); //in past
Instant instant = Instant.parse("2019-03-25T10:00:00.00Z");
Instant instant_plus_alittle = Instant
.parse("2019-03-25T10:00:01.00Z"); //1s in future
Instant instant2 = Instant.parse("2019-03-25T11:00:00.00Z");
Instant instant2_plus_alittle = Instant
.parse("2019-03-25T11:00:01.00Z");//1s in future
Instant instant3 = Instant.parse("2019-03-25T12:00:00.00Z");
ItemViewDB inventoryItemDB = new ItemViewDB("itemname", instant);
ItemViewDB inventoryItemDB2 = new ItemViewDB("itemname", instant2);
ItemViewDB inventoryItemDB3 = new ItemViewDB("OTHER_ITEM_NAME", instant3);
itemViewRepository.save(inventoryItemDB);
itemViewRepository.save(inventoryItemDB2);
itemViewRepository.save(inventoryItemDB3);
long nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant0);
assertEquals(2, nfound);
long nremoved = itemViewRepository
.removeByItemNameAndTimeViewedLessThan("itemname", instant0);
assertEquals(0, nremoved);
nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant0);
assertEquals(2, nfound); //unchanged
nremoved = itemViewRepository
.removeByItemNameAndTimeViewedLessThan("itemname", instant_plus_alittle);
assertEquals(1, nremoved);
nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant);
assertEquals(1, nfound); //one removed
nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant2);
assertEquals(1, nfound); //no more
nremoved = itemViewRepository
.removeByItemNameAndTimeViewedLessThan("itemname", instant2_plus_alittle);
assertEquals(1, nremoved);
nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("itemname", instant2);
assertEquals(0, nfound); //one removed
//unchanged
nfound = itemViewRepository
.countByItemNameAndTimeViewedGreaterThanEqual("OTHER_ITEM_NAME", instant);
assertEquals(1, nfound); //no more
}
}