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.util.Map;
21  
22  import org.junit.jupiter.api.Test;
23  import org.junit.jupiter.api.extension.ExtendWith;
24  import org.mybatis.jpetstore.domain.Account;
25  import org.springframework.beans.factory.annotation.Autowired;
26  import org.springframework.jdbc.core.JdbcTemplate;
27  import org.springframework.test.context.ContextConfiguration;
28  import org.springframework.test.context.junit.jupiter.SpringExtension;
29  import org.springframework.transaction.annotation.Transactional;
30  
31  @ExtendWith(SpringExtension.class)
32  @ContextConfiguration(classes = MapperTestContext.class)
33  @Transactional
34  class AccountMapperTest {
35  
36    @Autowired
37    private AccountMapper mapper;
38  
39    @Autowired
40    private JdbcTemplate jdbcTemplate;
41  
42    @Test
43    void getAccountByUsername() {
44      // given
45      String username = "j2ee";
46  
47      // when
48      Account account = mapper.getAccountByUsername(username);
49  
50      // then
51      assertThat(account.getUsername()).isEqualTo("j2ee");
52      assertThat(account.getEmail()).isEqualTo("yourname@yourdomain.com");
53      assertThat(account.getFirstName()).isEqualTo("ABC");
54      assertThat(account.getLastName()).isEqualTo("XYX");
55      assertThat(account.getStatus()).isEqualTo("OK");
56      assertThat(account.getAddress1()).isEqualTo("901 San Antonio Road");
57      assertThat(account.getAddress2()).isEqualTo("MS UCUP02-206");
58      assertThat(account.getCity()).isEqualTo("Palo Alto");
59      assertThat(account.getState()).isEqualTo("CA");
60      assertThat(account.getZip()).isEqualTo("94303");
61      assertThat(account.getCountry()).isEqualTo("USA");
62      assertThat(account.getPhone()).isEqualTo("555-555-5555");
63      assertThat(account.getLanguagePreference()).isEqualTo("english");
64      assertThat(account.getFavouriteCategoryId()).isEqualTo("DOGS");
65      assertThat(account.isListOption()).isTrue();
66      assertThat(account.isBannerOption()).isTrue();
67      assertThat(account.getBannerName()).isEqualTo("<image src=\"../images/banner_dogs.gif\">");
68  
69    }
70  
71    @Test
72    void getAccountByUsernameAndPassword() {
73      // given
74      String username = "ACID";
75      String password = "ACID";
76  
77      // when
78      Account account = mapper.getAccountByUsernameAndPassword(username, password);
79  
80      // then
81      assertThat(account.getUsername()).isEqualTo("ACID");
82      assertThat(account.getEmail()).isEqualTo("acid@yourdomain.com");
83      assertThat(account.getFirstName()).isEqualTo("ABC");
84      assertThat(account.getLastName()).isEqualTo("XYX");
85      assertThat(account.getStatus()).isEqualTo("OK");
86      assertThat(account.getAddress1()).isEqualTo("901 San Antonio Road");
87      assertThat(account.getAddress2()).isEqualTo("MS UCUP02-206");
88      assertThat(account.getCity()).isEqualTo("Palo Alto");
89      assertThat(account.getState()).isEqualTo("CA");
90      assertThat(account.getZip()).isEqualTo("94303");
91      assertThat(account.getCountry()).isEqualTo("USA");
92      assertThat(account.getPhone()).isEqualTo("555-555-5555");
93      assertThat(account.getLanguagePreference()).isEqualTo("english");
94      assertThat(account.getFavouriteCategoryId()).isEqualTo("CATS");
95      assertThat(account.isListOption()).isTrue();
96      assertThat(account.isBannerOption()).isTrue();
97      assertThat(account.getBannerName()).isEqualTo("<image src=\"../images/banner_cats.gif\">");
98  
99    }
100 
101   @Test
102   void insertAccount() {
103 
104     // given
105     Account account = new Account();
106     account.setUsername("mybatis");
107     account.setEmail("mybatis@example.com");
108     account.setFirstName("My");
109     account.setLastName("Batis");
110     account.setStatus("NG");
111     account.setAddress1("Address 1");
112     account.setAddress2("Address 2");
113     account.setCity("City");
114     account.setState("ST");
115     account.setZip("99001");
116     account.setCountry("JPN");
117     account.setPhone("09012345678");
118 
119     // when
120     mapper.insertAccount(account);
121 
122     // then
123     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM account WHERE userid = ?", "mybatis");
124     assertThat(record).hasSize(12).containsEntry("USERID", account.getUsername())
125         .containsEntry("EMAIL", account.getEmail()).containsEntry("FIRSTNAME", account.getFirstName())
126         .containsEntry("LASTNAME", account.getLastName()).containsEntry("STATUS", account.getStatus())
127         .containsEntry("ADDR1", account.getAddress1()).containsEntry("ADDR2", account.getAddress2())
128         .containsEntry("CITY", account.getCity()).containsEntry("STATE", account.getState())
129         .containsEntry("ZIP", account.getZip()).containsEntry("COUNTRY", account.getCountry())
130         .containsEntry("PHONE", account.getPhone());
131   }
132 
133   @Test
134   void insertProfile() {
135 
136     // given
137     Account account = new Account();
138     account.setUsername("mybatis");
139     account.setLanguagePreference("japanese");
140     account.setFavouriteCategoryId("C01");
141     account.setListOption(true);
142     account.setBannerOption(false);
143 
144     // when
145     mapper.insertProfile(account);
146 
147     // then
148     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM profile WHERE userid = ?", "mybatis");
149 
150     assertThat(record).hasSize(5).containsEntry("USERID", account.getUsername())
151         .containsEntry("LANGPREF", account.getLanguagePreference())
152         .containsEntry("FAVCATEGORY", account.getFavouriteCategoryId()).containsEntry("MYLISTOPT", 1)
153         .containsEntry("BANNEROPT", 0);
154   }
155 
156   @Test
157   void insertSignon() {
158 
159     // given
160     Account account = new Account();
161     account.setUsername("mybatis");
162     account.setPassword("password");
163 
164     // when
165     mapper.insertSignon(account);
166 
167     // then
168     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM signon WHERE username = ?", "mybatis");
169 
170     assertThat(record).hasSize(2).containsEntry("USERNAME", account.getUsername()).containsEntry("PASSWORD",
171         account.getPassword());
172   }
173 
174   @Test
175   void updateAccount() {
176 
177     // given
178     Account account = new Account();
179     account.setUsername("j2ee");
180     account.setEmail("mybatis@example.com");
181     account.setFirstName("My");
182     account.setLastName("Batis");
183     account.setStatus("NG");
184     account.setAddress1("Address 1");
185     account.setAddress2("Address 2");
186     account.setCity("City");
187     account.setState("ST");
188     account.setZip("99001");
189     account.setCountry("JPN");
190     account.setPhone("09012345678");
191 
192     // when
193     mapper.updateAccount(account);
194 
195     // then
196     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM account WHERE userid = ?", "j2ee");
197 
198     assertThat(record).hasSize(12).containsEntry("USERID", account.getUsername())
199         .containsEntry("EMAIL", account.getEmail()).containsEntry("FIRSTNAME", account.getFirstName())
200         .containsEntry("LASTNAME", account.getLastName()).containsEntry("STATUS", account.getStatus())
201         .containsEntry("ADDR1", account.getAddress1()).containsEntry("ADDR2", account.getAddress2())
202         .containsEntry("CITY", account.getCity()).containsEntry("STATE", account.getState())
203         .containsEntry("ZIP", account.getZip()).containsEntry("COUNTRY", account.getCountry())
204         .containsEntry("PHONE", account.getPhone());
205   }
206 
207   @Test
208   void updateProfile() {
209 
210     // given
211     Account account = new Account();
212     account.setUsername("j2ee");
213     account.setLanguagePreference("japanese");
214     account.setFavouriteCategoryId("C01");
215     account.setListOption(false);
216     account.setBannerOption(false);
217 
218     // when
219     mapper.updateProfile(account);
220 
221     // then
222     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM profile WHERE userid = ?", "j2ee");
223 
224     assertThat(record).hasSize(5).containsEntry("USERID", account.getUsername())
225         .containsEntry("LANGPREF", account.getLanguagePreference())
226         .containsEntry("FAVCATEGORY", account.getFavouriteCategoryId()).containsEntry("MYLISTOPT", 0)
227         .containsEntry("BANNEROPT", 0);
228   }
229 
230   @Test
231   void updateSignon() {
232 
233     // given
234     Account account = new Account();
235     account.setUsername("j2ee");
236     account.setPassword("password");
237 
238     // when
239     mapper.updateSignon(account);
240 
241     // then
242     Map<String, Object> record = jdbcTemplate.queryForMap("SELECT * FROM signon WHERE username = ?", "j2ee");
243 
244     assertThat(record).hasSize(2).containsEntry("USERNAME", account.getUsername()).containsEntry("PASSWORD",
245         account.getPassword());
246   }
247 
248 }