feature: #1319 add table module pattern (#1742)

* modify table module pattern

* fix code smells

* resolve conversation

Co-authored-by: tao-sun2 <sustc18st@gmai.com>
Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
This commit is contained in:
Tao
2021-05-18 03:06:35 +08:00
committed by GitHub
parent 122e6edb38
commit e498c25675
11 changed files with 671 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
package com.iluwatar.tablemodule;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
/**
* Tests that the table module example runs without errors.
*/
class AppTest {
@Test
void shouldExecuteWithoutException() {
assertDoesNotThrow(() -> App.main(new String[]{}));
}
}

View File

@@ -0,0 +1,78 @@
package com.iluwatar.tablemodule;
import org.h2.jdbcx.JdbcDataSource;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import javax.sql.DataSource;
import java.sql.DriverManager;
import java.sql.SQLException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
class UserTableModuleTest {
private static final String DB_URL = "jdbc:h2:~/test";
private static DataSource createDataSource() {
var dataSource = new JdbcDataSource();
dataSource.setURL(DB_URL);
return dataSource;
}
@BeforeEach
void setUp() throws SQLException {
try (var connection = DriverManager.getConnection(DB_URL);
var statement = connection.createStatement()) {
statement.execute(UserTableModule.DELETE_SCHEMA_SQL);
statement.execute(UserTableModule.CREATE_SCHEMA_SQL);
}
}
@AfterEach
void tearDown() throws SQLException {
try (var connection = DriverManager.getConnection(DB_URL);
var statement = connection.createStatement()) {
statement.execute(UserTableModule.DELETE_SCHEMA_SQL);
}
}
@Test
void loginShouldFail() throws SQLException {
var dataSource = createDataSource();
var userTableModule = new UserTableModule(dataSource);
var user = new User(1, "123456", "123456");
assertEquals(0, userTableModule.login(user.getUsername(),
user.getPassword()));
}
@Test
void loginShouldSucceed() throws SQLException {
var dataSource = createDataSource();
var userTableModule = new UserTableModule(dataSource);
var user = new User(1, "123456", "123456");
userTableModule.registerUser(user);
assertEquals(1, userTableModule.login(user.getUsername(),
user.getPassword()));
}
@Test
void registerShouldFail() throws SQLException {
var dataSource = createDataSource();
var userTableModule = new UserTableModule(dataSource);
var user = new User(1, "123456", "123456");
userTableModule.registerUser(user);
assertThrows(SQLException.class, () -> {
userTableModule.registerUser(user);
});
}
@Test
void registerShouldSucceed() throws SQLException {
var dataSource = createDataSource();
var userTableModule = new UserTableModule(dataSource);
var user = new User(1, "123456", "123456");
assertEquals(1, userTableModule.registerUser(user));
}
}

View File

@@ -0,0 +1,131 @@
package com.iluwatar.tablemodule;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class UserTest {
@Test
void testCanEqual() {
assertFalse((new User(1, "janedoe", "iloveyou"))
.canEqual("Other"));
}
@Test
void testCanEqual2() {
var user = new User(1, "janedoe", "iloveyou");
assertTrue(user.canEqual(new User(1, "janedoe",
"iloveyou")));
}
@Test
void testEquals1() {
var user = new User(1, "janedoe", "iloveyou");
assertNotEquals("42", user);
}
@Test
void testEquals2() {
var user = new User(1, "janedoe", "iloveyou");
assertEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals3() {
var user = new User(123, "janedoe", "iloveyou");
assertNotEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals4() {
var user = new User(1, null, "iloveyou");
assertNotEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals5() {
var user = new User(1, "iloveyou", "iloveyou");
assertNotEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals6() {
var user = new User(1, "janedoe", "janedoe");
assertNotEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals7() {
var user = new User(1, "janedoe", null);
assertNotEquals(user, new User(1, "janedoe",
"iloveyou"));
}
@Test
void testEquals8() {
var user = new User(1, null, "iloveyou");
assertEquals(user, new User(1, null,
"iloveyou"));
}
@Test
void testEquals9() {
var user = new User(1, "janedoe", null);
assertEquals(user, new User(1, "janedoe",
null));
}
@Test
void testHashCode1() {
assertEquals(-1758941372, (new User(1, "janedoe",
"iloveyou")).hashCode());
}
@Test
void testHashCode2() {
assertEquals(-1332207447, (new User(1, null,
"iloveyou")).hashCode());
}
@Test
void testHashCode3() {
assertEquals(-426522485, (new User(1, "janedoe",
null)).hashCode());
}
@Test
void testSetId() {
var user = new User(1, "janedoe", "iloveyou");
user.setId(2);
assertEquals(2, user.getId());
}
@Test
void testSetPassword() {
var user = new User(1, "janedoe", "tmp");
user.setPassword("iloveyou");
assertEquals("iloveyou", user.getPassword());
}
@Test
void testSetUsername() {
var user = new User(1, "tmp", "iloveyou");
user.setUsername("janedoe");
assertEquals("janedoe", user.getUsername());
}
@Test
void testToString() {
var user = new User(1, "janedoe", "iloveyou");
assertEquals(String.format("User(id=%s, username=%s, password=%s)",
user.getId(), user.getUsername(), user.getPassword()),
user.toString());
}
}