View Javadoc
1   /*
2    *    Copyright 2010-2022 the original author or authors.
3    *
4    *    Licensed under the Apache License, Version 2.0 (the "License");
5    *    you may not use this file except in compliance with the License.
6    *    You may obtain a copy of the License at
7    *
8    *       https://www.apache.org/licenses/LICENSE-2.0
9    *
10   *    Unless required by applicable law or agreed to in writing, software
11   *    distributed under the License is distributed on an "AS IS" BASIS,
12   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *    See the License for the specific language governing permissions and
14   *    limitations under the License.
15   */
16  package org.mybatis.jpetstore.mapper;
17  
18  import static org.assertj.core.api.Assertions.assertThat;
19  
20  import java.math.BigDecimal;
21  import java.time.LocalDate;
22  import java.time.LocalDateTime;
23  import java.util.List;
24  import java.util.Map;
25  
26  import org.junit.jupiter.api.Test;
27  import org.junit.jupiter.api.extension.ExtendWith;
28  import org.mybatis.jpetstore.domain.Order;
29  import org.springframework.beans.factory.annotation.Autowired;
30  import org.springframework.jdbc.core.JdbcTemplate;
31  import org.springframework.test.context.ContextConfiguration;
32  import org.springframework.test.context.junit.jupiter.SpringExtension;
33  import org.springframework.transaction.annotation.Transactional;
34  
35  @ExtendWith(SpringExtension.class)
36  @ContextConfiguration(classes = MapperTestContext.class)
37  @Transactional
38  class OrderMapperTest {
39  
40    @Autowired
41    private OrderMapper mapper;
42  
43    @Autowired
44    private JdbcTemplate jdbcTemplate;
45  
46    @Test
47    void insertOrder() {
48      // given
49      Order order = new Order();
50      order.setOrderId(1);
51      order.setOrderDate(java.sql.Timestamp.valueOf(LocalDateTime.of(2018, 12, 31, 23, 59, 59)));
52      order.setUsername("j2ee");
53      order.setCardType("Visa");
54      order.setCreditCard("1234 5678 9012 3456");
55      order.setExpiryDate("06/2022");
56      order.setCourier("Courier");
57      order.setLocale("ja");
58      order.setTotalPrice(new BigDecimal("2000.05"));
59      order.setBillAddress1("Bill Address1");
60      order.setBillAddress2("Bill Address2");
61      order.setBillCity("Bill City");
62      order.setBillState("Bill State");
63      order.setBillCountry("USA");
64      order.setBillZip("80001");
65      order.setBillToFirstName("Bill First Name");
66      order.setBillToLastName("Bill Last Name");
67      order.setShipAddress1("Ship Address1");
68      order.setShipAddress2("Ship Address2");
69      order.setShipCity("Ship City");
70      order.setShipState("Ship State");
71      order.setShipCountry("JPN");
72      order.setShipZip("70001");
73      order.setShipToFirstName("Ship First Name");
74      order.setShipToLastName("Ship Last Name");
75  
76      // when
77      mapper.insertOrder(order);
78  
79      // then
80      Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM orders WHERE orderid = ?", 1);
81      assertThat(record).hasSize(25).containsEntry("ORDERID", order.getOrderId())
82          .containsEntry("USERID", order.getUsername())
83          .containsEntry("ORDERDATE", java.sql.Date.valueOf(LocalDate.of(2018, 12, 31)))
84          .containsEntry("SHIPADDR1", order.getShipAddress1()).containsEntry("SHIPADDR2", order.getShipAddress2())
85          .containsEntry("SHIPCITY", order.getShipCity()).containsEntry("SHIPSTATE", order.getShipState())
86          .containsEntry("SHIPZIP", order.getShipZip()).containsEntry("SHIPCOUNTRY", order.getShipCountry())
87          .containsEntry("SHIPTOFIRSTNAME", order.getShipToFirstName())
88          .containsEntry("SHIPTOLASTNAME", order.getShipToLastName()).containsEntry("BILLADDR1", order.getBillAddress1())
89          .containsEntry("BILLADDR2", order.getBillAddress2()).containsEntry("BILLCITY", order.getBillCity())
90          .containsEntry("BILLSTATE", order.getBillState()).containsEntry("BILLZIP", order.getBillZip())
91          .containsEntry("BILLCOUNTRY", order.getBillCountry())
92          .containsEntry("BILLTOFIRSTNAME", order.getBillToFirstName())
93          .containsEntry("BILLTOLASTNAME", order.getBillToLastName()).containsEntry("COURIER", order.getCourier())
94          .containsEntry("TOTALPRICE", order.getTotalPrice()).containsEntry("CREDITCARD", order.getCreditCard())
95          .containsEntry("EXPRDATE", order.getExpiryDate()).containsEntry("CARDTYPE", order.getCardType())
96          .containsEntry("LOCALE", order.getLocale());
97  
98    }
99  
100   @Test
101   void insertOrderStatus() {
102     // given
103     Order order = new Order();
104     order.setOrderId(1);
105     order.setOrderDate(java.sql.Timestamp.valueOf(LocalDateTime.of(2018, 12, 31, 23, 59, 59)));
106     order.setStatus("OK");
107 
108     // when
109     mapper.insertOrderStatus(order);
110 
111     // then
112     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM orderstatus WHERE orderid = ?", 1);
113     assertThat(record).hasSize(4).containsEntry("ORDERID", order.getOrderId())
114         .containsEntry("LINENUM", order.getOrderId())
115         .containsEntry("TIMESTAMP", java.sql.Date.valueOf(LocalDate.of(2018, 12, 31)))
116         .containsEntry("STATUS", order.getStatus());
117 
118   }
119 
120   @Test
121   void getOrdersByUsername() {
122     // given
123     Order newOrder = new Order();
124     newOrder.setOrderId(1);
125     newOrder.setOrderDate(java.sql.Timestamp.valueOf(LocalDateTime.of(2018, 12, 31, 23, 59, 59)));
126     newOrder.setStatus("OK");
127     newOrder.setUsername("j2ee");
128     newOrder.setCardType("Visa");
129     newOrder.setCreditCard("1234 5678 9012 3456");
130     newOrder.setExpiryDate("06/2022");
131     newOrder.setCourier("Courier");
132     newOrder.setLocale("ja");
133     newOrder.setTotalPrice(new BigDecimal("2000.05"));
134     newOrder.setBillAddress1("Bill Address1");
135     newOrder.setBillAddress2("Bill Address2");
136     newOrder.setBillCity("Bill City");
137     newOrder.setBillState("Bill State");
138     newOrder.setBillCountry("USA");
139     newOrder.setBillZip("80001");
140     newOrder.setBillToFirstName("Bill First Name");
141     newOrder.setBillToLastName("Bill Last Name");
142     newOrder.setShipAddress1("Ship Address1");
143     newOrder.setShipAddress2("Ship Address2");
144     newOrder.setShipCity("Ship City");
145     newOrder.setShipState("Ship State");
146     newOrder.setShipCountry("JPN");
147     newOrder.setShipZip("70001");
148     newOrder.setShipToFirstName("Ship First Name");
149     newOrder.setShipToLastName("Ship Last Name");
150     mapper.insertOrder(newOrder);
151     mapper.insertOrderStatus(newOrder);
152 
153     // when
154     List<Order> orders = mapper.getOrdersByUsername("j2ee");
155 
156     // then
157     assertThat(orders).hasSize(1);
158     assertThat(orders.get(0).getOrderId()).isEqualTo(newOrder.getOrderId());
159     assertThat(orders.get(0).getOrderDate()).isEqualTo(java.sql.Date.valueOf(LocalDate.of(2018, 12, 31)));
160     assertThat(orders.get(0).getCardType()).isEqualTo(newOrder.getCardType());
161     assertThat(orders.get(0).getCreditCard()).isEqualTo(newOrder.getCreditCard());
162     assertThat(orders.get(0).getExpiryDate()).isEqualTo(newOrder.getExpiryDate());
163     assertThat(orders.get(0).getCourier()).isEqualTo(newOrder.getCourier());
164     assertThat(orders.get(0).getLocale()).isEqualTo(newOrder.getLocale());
165     assertThat(orders.get(0).getTotalPrice()).isEqualTo(newOrder.getTotalPrice());
166     assertThat(orders.get(0).getBillAddress1()).isEqualTo(newOrder.getBillAddress1());
167     assertThat(orders.get(0).getBillAddress2()).isEqualTo(newOrder.getBillAddress2());
168     assertThat(orders.get(0).getBillCity()).isEqualTo(newOrder.getBillCity());
169     assertThat(orders.get(0).getBillState()).isEqualTo(newOrder.getBillState());
170     assertThat(orders.get(0).getBillCountry()).isEqualTo(newOrder.getBillCountry());
171     assertThat(orders.get(0).getBillZip()).isEqualTo(newOrder.getBillZip());
172     assertThat(orders.get(0).getBillToFirstName()).isEqualTo(newOrder.getBillToFirstName());
173     assertThat(orders.get(0).getBillToLastName()).isEqualTo(newOrder.getBillToLastName());
174     assertThat(orders.get(0).getShipAddress1()).isEqualTo(newOrder.getShipAddress1());
175     assertThat(orders.get(0).getShipAddress2()).isEqualTo(newOrder.getShipAddress2());
176     assertThat(orders.get(0).getShipCity()).isEqualTo(newOrder.getShipCity());
177     assertThat(orders.get(0).getShipState()).isEqualTo(newOrder.getShipState());
178     assertThat(orders.get(0).getShipCountry()).isEqualTo(newOrder.getShipCountry());
179     assertThat(orders.get(0).getShipZip()).isEqualTo(newOrder.getShipZip());
180     assertThat(orders.get(0).getShipToFirstName()).isEqualTo(newOrder.getShipToFirstName());
181     assertThat(orders.get(0).getShipToLastName()).isEqualTo(newOrder.getShipToLastName());
182   }
183 
184   @Test
185   void getOrder() {
186     // given
187     Order newOrder = new Order();
188     newOrder.setOrderId(1);
189     newOrder.setOrderDate(java.sql.Timestamp.valueOf(LocalDateTime.of(2018, 12, 31, 23, 59, 59)));
190     newOrder.setStatus("OK");
191     newOrder.setUsername("j2ee");
192     newOrder.setCardType("Visa");
193     newOrder.setCreditCard("1234 5678 9012 3456");
194     newOrder.setExpiryDate("06/2022");
195     newOrder.setCourier("Courier");
196     newOrder.setLocale("ja");
197     newOrder.setTotalPrice(new BigDecimal("2000.05"));
198     newOrder.setBillAddress1("Bill Address1");
199     newOrder.setBillAddress2("Bill Address2");
200     newOrder.setBillCity("Bill City");
201     newOrder.setBillState("Bill State");
202     newOrder.setBillCountry("USA");
203     newOrder.setBillZip("80001");
204     newOrder.setBillToFirstName("Bill First Name");
205     newOrder.setBillToLastName("Bill Last Name");
206     newOrder.setShipAddress1("Ship Address1");
207     newOrder.setShipAddress2("Ship Address2");
208     newOrder.setShipCity("Ship City");
209     newOrder.setShipState("Ship State");
210     newOrder.setShipCountry("JPN");
211     newOrder.setShipZip("70001");
212     newOrder.setShipToFirstName("Ship First Name");
213     newOrder.setShipToLastName("Ship Last Name");
214     mapper.insertOrder(newOrder);
215     mapper.insertOrderStatus(newOrder);
216 
217     // when
218     Order order = mapper.getOrder(1);
219 
220     // then
221     assertThat(order.getOrderId()).isEqualTo(newOrder.getOrderId());
222     assertThat(order.getOrderDate()).isEqualTo(java.sql.Date.valueOf(LocalDate.of(2018, 12, 31)));
223     assertThat(order.getCardType()).isEqualTo(newOrder.getCardType());
224     assertThat(order.getCreditCard()).isEqualTo(newOrder.getCreditCard());
225     assertThat(order.getExpiryDate()).isEqualTo(newOrder.getExpiryDate());
226     assertThat(order.getCourier()).isEqualTo(newOrder.getCourier());
227     assertThat(order.getLocale()).isEqualTo(newOrder.getLocale());
228     assertThat(order.getTotalPrice()).isEqualTo(newOrder.getTotalPrice());
229     assertThat(order.getBillAddress1()).isEqualTo(newOrder.getBillAddress1());
230     assertThat(order.getBillAddress2()).isEqualTo(newOrder.getBillAddress2());
231     assertThat(order.getBillCity()).isEqualTo(newOrder.getBillCity());
232     assertThat(order.getBillState()).isEqualTo(newOrder.getBillState());
233     assertThat(order.getBillCountry()).isEqualTo(newOrder.getBillCountry());
234     assertThat(order.getBillZip()).isEqualTo(newOrder.getBillZip());
235     assertThat(order.getBillToFirstName()).isEqualTo(newOrder.getBillToFirstName());
236     assertThat(order.getBillToLastName()).isEqualTo(newOrder.getBillToLastName());
237     assertThat(order.getShipAddress1()).isEqualTo(newOrder.getShipAddress1());
238     assertThat(order.getShipAddress2()).isEqualTo(newOrder.getShipAddress2());
239     assertThat(order.getShipCity()).isEqualTo(newOrder.getShipCity());
240     assertThat(order.getShipState()).isEqualTo(newOrder.getShipState());
241     assertThat(order.getShipCountry()).isEqualTo(newOrder.getShipCountry());
242     assertThat(order.getShipZip()).isEqualTo(newOrder.getShipZip());
243     assertThat(order.getShipToFirstName()).isEqualTo(newOrder.getShipToFirstName());
244     assertThat(order.getShipToLastName()).isEqualTo(newOrder.getShipToLastName());
245   }
246 
247 }