· 4 years ago · Jan 21, 2021, 07:42 PM
1package io.github.tdudzik.chess.db;
2
3import org.junit.jupiter.api.*;
4
5import java.sql.Connection;
6import java.sql.DriverManager;
7import java.util.Optional;
8
9import static org.junit.jupiter.api.Assertions.*;
10
11class DatabaseTest {
12
13 private static final Connection connection = dbConnect().get();
14 private static final Database database = new Database(connection);
15
16 private static Optional<java.sql.Connection> dbConnect() {
17 try {
18 final var connection = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
19 return Optional.of(connection);
20 } catch (Exception e) {
21 System.out.println(e.getMessage());
22 return Optional.empty();
23 }
24 }
25
26 @BeforeEach
27 public void beforeEach() {
28 try {
29 final var sql = "DROP TABLE IF EXISTS `user`;" +
30 "CREATE TABLE `user`( " +
31 "`user_id` int unsigned NOT NULL AUTO_INCREMENT, " +
32 "`username` varchar(255) NOT NULL, " +
33 "`password` varchar(60) NOT NULL, " +
34 "PRIMARY KEY (`user_id`), " +
35 "UNIQUE KEY `username` (`username`))";
36 final var stmt = connection.createStatement();
37 stmt.executeUpdate(sql);
38 stmt.close();
39 } catch (Exception e) {
40 System.out.println(e.getMessage());
41 }
42 }
43
44 @AfterAll
45 public static void afterAll() {
46 try {
47 connection.close();
48 } catch (Exception e) {
49 System.out.println(e.getMessage());
50 }
51 }
52
53 @Test
54 public void createdUserShouldBeFound() {
55 String username = "username";
56 String password = "password";
57 Optional<User> createdUser = database.createUser(username, password);
58 Optional<User> foundUser = database.findUserByUsername(username);
59
60 assertTrue(createdUser.isPresent());
61 assertTrue(foundUser.isPresent());
62
63 assertEquals(1, createdUser.get().userId());
64 assertEquals(username, createdUser.get().username());
65 assertEquals(password, createdUser.get().password());
66 assertEquals(username, foundUser.get().username());
67 }
68
69 @Test
70 public void notCreatedUserShouldNotBeFound() {
71 Optional<User> createdUser = database.createUser("username", "password");
72 Optional<User> foundUser = database.findUserByUsername("wrong_username");
73
74 assertTrue(createdUser.isPresent());
75 assertFalse(foundUser.isPresent());
76 }
77}