From 62880e6d2fdfb86336359c0350f57c7efd908597 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 10:06:45 +0200 Subject: [PATCH 1/8] userDaoJdbc updated to return back whole objects. --- src/main/java/Main.java | 2 +- .../codecool/shop/dao/jdbc/UserDaoJdbc.java | 25 +++++++++++++------ test/com/codecool/shop/dao/UserDaoTest.java | 25 +++++++++++++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 test/com/codecool/shop/dao/UserDaoTest.java diff --git a/src/main/java/Main.java b/src/main/java/Main.java index dc461e5..a5fd79a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -32,7 +32,7 @@ public static void main(String[] args) { port(8888); // populate some data for the memory storage - //populateData(); + populateData(); // Always add generic routes to the end get("/", productController::renderProducts, templateEngine); diff --git a/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java b/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java index 5e8d1dc..ac104fb 100644 --- a/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java +++ b/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java @@ -30,6 +30,7 @@ public static UserDaoJdbc getInstance() { public void add(User user) { //get the highest ID in the user DB. //propably not needed as the primary key is incrementing itself. + /* String query = "SELECT id FROM users ORDER BY id DESC LIMIT 1"; try (Connection conn = connection.getConnection(); @@ -45,17 +46,23 @@ public void add(User user) { } catch (IOException e) { e.printStackTrace(); } - + */ //insert the new user into the DB. final String INSERT_QUERY = "INSERT INTO users (name, password, rank) VALUES (?,?,?);"; - + String[] columnsToReturn = {"id"}; try { - PreparedStatement pstmt = connection.getConnection().prepareStatement(INSERT_QUERY); + PreparedStatement pstmt = connection.getConnection().prepareStatement(INSERT_QUERY, columnsToReturn); pstmt.setString(1, user.getName()); pstmt.setString(2, user.getPassword()); pstmt.setInt(3, user.getRank()); pstmt.executeUpdate(); + + // to get id of created row + ResultSet generatedKeys = pstmt.getGeneratedKeys(); + generatedKeys.next(); + user.setId(generatedKeys.getInt("id")); + } catch (SQLException e) { e.printStackTrace(); } catch (IOException e) { @@ -75,6 +82,7 @@ public User find(int id) { User result = new User(resultSet.getString("name"), resultSet.getString("password"), resultSet.getInt("rank")); + result.setId(id); return result; } else { return null; @@ -149,12 +157,15 @@ public List getAll() { if (resultSet.first()){ resultSet.beforeFirst(); List result = new ArrayList<>(); - while (resultSet.next()){ - result.add(new User(resultSet.getString("name"), + while (resultSet.next()) { + User tempuser = new User(resultSet.getString("name"), resultSet.getString("password"), - resultSet.getInt("rank"))); - return result; + resultSet.getInt("rank")); + tempuser.setId(resultSet.getInt("id")); + result.add(tempuser); } + return result; + } else { return null; } diff --git a/test/com/codecool/shop/dao/UserDaoTest.java b/test/com/codecool/shop/dao/UserDaoTest.java new file mode 100644 index 0000000..847246d --- /dev/null +++ b/test/com/codecool/shop/dao/UserDaoTest.java @@ -0,0 +1,25 @@ +package com.codecool.shop.dao; + +import com.codecool.shop.dao.implementation.ProductCategoryDaoMem; +import com.codecool.shop.dao.jdbc.UserDaoJdbc; +import com.codecool.shop.model.ProductCategory; +import com.codecool.shop.model.User; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class UserDaoTest { + + @Test + public void testAddNewProductCategory(){ + UserDao userDataStore = UserDaoJdbc.getInstance(); + User admin = new User("admin", "admin", 1); + userDataStore.add(admin); + assertEquals(admin.toString(), userDataStore.getAll().get(0).toString()); + } + +} \ No newline at end of file From f98caca7e59b5c724b55bf6866db0362df203721 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 10:27:06 +0200 Subject: [PATCH 2/8] userDaoJdbc test first draft. --- test/com/codecool/shop/dao/UserDaoTest.java | 39 +++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/test/com/codecool/shop/dao/UserDaoTest.java b/test/com/codecool/shop/dao/UserDaoTest.java index 847246d..a7d35f3 100644 --- a/test/com/codecool/shop/dao/UserDaoTest.java +++ b/test/com/codecool/shop/dao/UserDaoTest.java @@ -1,6 +1,6 @@ package com.codecool.shop.dao; -import com.codecool.shop.dao.implementation.ProductCategoryDaoMem; +import com.codecool.shop.dao.implementation.UserDaoMem; import com.codecool.shop.dao.jdbc.UserDaoJdbc; import com.codecool.shop.model.ProductCategory; import com.codecool.shop.model.User; @@ -14,12 +14,47 @@ class UserDaoTest { + static UserDao userDataStore = UserDaoMem.getInstance(); + + @BeforeEach + public void initializeTestRequirements(){ + List productIdList = new ArrayList<>(); + for (User user : userDataStore.getAll()) { + productIdList.add(user.getId()); + } + for (Integer id: productIdList){ + userDataStore.remove(id); + } + } + @Test - public void testAddNewProductCategory(){ + public void testAddNewUser(){ UserDao userDataStore = UserDaoJdbc.getInstance(); User admin = new User("admin", "admin", 1); + admin.setId(1); userDataStore.add(admin); assertEquals(admin.toString(), userDataStore.getAll().get(0).toString()); } + //needs to be looked at + @Test + public void testFindProductCategory(){ + User user = new User("user", "pass", 3); + userDataStore.add(user); + assertEquals(1, userDataStore.getAll().size()); + } + + @Test + public void testRemoveProductCategory(){ + User user = new User("admin2", "admin2", 1); + userDataStore.add(user); + userDataStore.remove(1); + assertEquals(0, userDataStore.getAll().size()); + } + + @Test + public void testGetAllProductCategory(){ + List productCategories = new ArrayList<>(); + assertEquals(productCategories, userDataStore.getAll()); + } } \ No newline at end of file From 28cfc287c3f60719b61d7dea2f12496dda1170b8 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 10:28:04 +0200 Subject: [PATCH 3/8] userDaoJdbc test name correction. --- test/com/codecool/shop/dao/UserDaoTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/com/codecool/shop/dao/UserDaoTest.java b/test/com/codecool/shop/dao/UserDaoTest.java index a7d35f3..136f8f5 100644 --- a/test/com/codecool/shop/dao/UserDaoTest.java +++ b/test/com/codecool/shop/dao/UserDaoTest.java @@ -54,7 +54,7 @@ public void testRemoveProductCategory(){ @Test public void testGetAllProductCategory(){ - List productCategories = new ArrayList<>(); - assertEquals(productCategories, userDataStore.getAll()); + List user = new ArrayList<>(); + assertEquals(user, userDataStore.getAll()); } } \ No newline at end of file From 002fad33cc12a6da2c36e0877252ccde8699d065 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 19:02:40 +0200 Subject: [PATCH 4/8] userDaoJdbc test first parameterization implemented.(at least it looks that way). --- my-app.iml | 7 +-- pom.xml | 5 ++ .../java/com/codecool/shop/dao/UserDao.java | 1 + .../shop/dao/implementation/UserDaoMem.java | 2 +- .../codecool/shop/dao/jdbc/UserDaoJdbc.java | 11 ++-- test/com/codecool/shop/dao/UserDaoTest.java | 57 +++++++++++-------- 6 files changed, 46 insertions(+), 37 deletions(-) diff --git a/my-app.iml b/my-app.iml index f4fe990..b15298a 100644 --- a/my-app.iml +++ b/my-app.iml @@ -11,12 +11,7 @@ - - - - - - + diff --git a/pom.xml b/pom.xml index 18e4c80..919aaf5 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,11 @@ + + org.junit.jupiter + junit-jupiter-params + 5.0.0-M4 + org.postgresql postgresql diff --git a/src/main/java/com/codecool/shop/dao/UserDao.java b/src/main/java/com/codecool/shop/dao/UserDao.java index ca1f950..e06fdbd 100644 --- a/src/main/java/com/codecool/shop/dao/UserDao.java +++ b/src/main/java/com/codecool/shop/dao/UserDao.java @@ -7,6 +7,7 @@ public interface UserDao { void add(User user); User find(int id); + User find(String name); void remove(int id); List getAll(); diff --git a/src/main/java/com/codecool/shop/dao/implementation/UserDaoMem.java b/src/main/java/com/codecool/shop/dao/implementation/UserDaoMem.java index e661227..e333cbc 100644 --- a/src/main/java/com/codecool/shop/dao/implementation/UserDaoMem.java +++ b/src/main/java/com/codecool/shop/dao/implementation/UserDaoMem.java @@ -29,7 +29,7 @@ public void add(User user) { DATA.add(user); } - + @Override public User find(String name) { return DATA.stream().filter(t -> t.getName().equals(name)).findFirst().orElse(null); } diff --git a/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java b/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java index ac104fb..dc4cbfb 100644 --- a/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java +++ b/src/main/java/com/codecool/shop/dao/jdbc/UserDaoJdbc.java @@ -96,6 +96,7 @@ public User find(int id) { return null; } + @Override public User find(String name) { String query = "SELECT * FROM users WHERE name ='" + name + "';"; try (Connection conn = connection.getConnection(); @@ -154,8 +155,8 @@ public List getAll() { try (Connection conn = connection.getConnection(); Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery(query)) { - if (resultSet.first()){ - resultSet.beforeFirst(); +// if (resultSet.first()){ + // resultSet.beforeFirst(); List result = new ArrayList<>(); while (resultSet.next()) { User tempuser = new User(resultSet.getString("name"), @@ -166,9 +167,9 @@ public List getAll() { } return result; - } else { - return null; - } + // } else { + // return null; + // } } catch (SQLException e) { e.printStackTrace(); diff --git a/test/com/codecool/shop/dao/UserDaoTest.java b/test/com/codecool/shop/dao/UserDaoTest.java index 136f8f5..18de3fe 100644 --- a/test/com/codecool/shop/dao/UserDaoTest.java +++ b/test/com/codecool/shop/dao/UserDaoTest.java @@ -6,54 +6,61 @@ import com.codecool.shop.model.User; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.ObjectArrayArguments; +import org.junit.jupiter.params.provider.ValueSource; import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.*; class UserDaoTest { - static UserDao userDataStore = UserDaoMem.getInstance(); - - @BeforeEach - public void initializeTestRequirements(){ - List productIdList = new ArrayList<>(); - for (User user : userDataStore.getAll()) { - productIdList.add(user.getId()); - } - for (Integer id: productIdList){ - userDataStore.remove(id); - } + static Stream arguments(){ + return Stream.of( + ObjectArrayArguments.create(UserDaoJdbc.getInstance()), + ObjectArrayArguments.create(UserDaoMem.getInstance()) + ); } - @Test - public void testAddNewUser(){ - UserDao userDataStore = UserDaoJdbc.getInstance(); + @ParameterizedTest + @MethodSource(names = { "arguments" }) + void testAddNewUser(UserDao userDataStore){ User admin = new User("admin", "admin", 1); admin.setId(1); userDataStore.add(admin); - assertEquals(admin.toString(), userDataStore.getAll().get(0).toString()); + int tempsize = userDataStore.getAll().size(); + assertEquals(admin.toString(), userDataStore.getAll().get(tempsize-1).toString()); } - //needs to be looked at @Test - public void testFindProductCategory(){ + public void testFindUserById(UserDao userDataStore){ + User user = new User("user", "pass", 3); + user.setId(3); + assertEquals(user.toString(), userDataStore.find(3).toString()); + } + @Test + public void testFindUserByName(UserDao userDataStore){ User user = new User("user", "pass", 3); - userDataStore.add(user); - assertEquals(1, userDataStore.getAll().size()); + user.setId(3); + assertEquals(user.toString(), userDataStore.find("user").toString()); } + //needs to be looked at @Test - public void testRemoveProductCategory(){ - User user = new User("admin2", "admin2", 1); - userDataStore.add(user); - userDataStore.remove(1); - assertEquals(0, userDataStore.getAll().size()); + public void testRemoveUser(UserDao userDataStore){ + int firstsize = userDataStore.getAll().size(); + userDataStore.remove(firstsize - 1); + int secondsize = userDataStore.getAll().size(); + assertEquals(1, firstsize - secondsize); } @Test - public void testGetAllProductCategory(){ + public void testGetAllUser(UserDao userDataStore){ List user = new ArrayList<>(); assertEquals(user, userDataStore.getAll()); } From 401036c3f1a6869caa268006ea0ee92481d347dd Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 19:32:51 +0200 Subject: [PATCH 5/8] Merged with development_new for new feature and later easy merge. --- my-app.iml | 1 + src/main/resources/connection.properties | 2 ++ 2 files changed, 3 insertions(+) diff --git a/my-app.iml b/my-app.iml index b15298a..af7f368 100644 --- a/my-app.iml +++ b/my-app.iml @@ -12,6 +12,7 @@ + diff --git a/src/main/resources/connection.properties b/src/main/resources/connection.properties index 1e7357a..6d33c16 100644 --- a/src/main/resources/connection.properties +++ b/src/main/resources/connection.properties @@ -1,2 +1,4 @@ localhost:5432 codecoolshop +kroki +Loler01+ \ No newline at end of file From d38ef0564a971ae6ec5dfda4cee3d55257e17297 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 22:30:37 +0200 Subject: [PATCH 6/8] Half of the tests are working. --- test/com/codecool/shop/dao/UserDaoTest.java | 26 +++++++++++++-------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/test/com/codecool/shop/dao/UserDaoTest.java b/test/com/codecool/shop/dao/UserDaoTest.java index 18de3fe..3c6f032 100644 --- a/test/com/codecool/shop/dao/UserDaoTest.java +++ b/test/com/codecool/shop/dao/UserDaoTest.java @@ -20,6 +20,7 @@ class UserDaoTest { + static Stream arguments(){ return Stream.of( ObjectArrayArguments.create(UserDaoJdbc.getInstance()), @@ -37,21 +38,25 @@ void testAddNewUser(UserDao userDataStore){ assertEquals(admin.toString(), userDataStore.getAll().get(tempsize-1).toString()); } - @Test + + @ParameterizedTest + @MethodSource(names = { "arguments" }) public void testFindUserById(UserDao userDataStore){ - User user = new User("user", "pass", 3); - user.setId(3); - assertEquals(user.toString(), userDataStore.find(3).toString()); + User user = new User("admin", "admin", 1); + user.setId(1); + assertEquals(user.toString(), userDataStore.find(1).toString()); } - @Test + + @ParameterizedTest + @MethodSource(names = { "arguments" }) public void testFindUserByName(UserDao userDataStore){ - User user = new User("user", "pass", 3); - user.setId(3); + User user = new User("user", "user", 2); + user.setId(2); assertEquals(user.toString(), userDataStore.find("user").toString()); } - //needs to be looked at - @Test + @ParameterizedTest + @MethodSource(names = { "arguments" }) public void testRemoveUser(UserDao userDataStore){ int firstsize = userDataStore.getAll().size(); userDataStore.remove(firstsize - 1); @@ -59,7 +64,8 @@ public void testRemoveUser(UserDao userDataStore){ assertEquals(1, firstsize - secondsize); } - @Test + @ParameterizedTest + @MethodSource(names = { "arguments" }) public void testGetAllUser(UserDao userDataStore){ List user = new ArrayList<>(); assertEquals(user, userDataStore.getAll()); From 8c022af67728e0a6c2bc685c3cc87212d818e55f Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 23:04:50 +0200 Subject: [PATCH 7/8] Merged with development_new to eliminate merge conflicts. --- my-app.iml | 1 - 1 file changed, 1 deletion(-) diff --git a/my-app.iml b/my-app.iml index af7f368..b15298a 100644 --- a/my-app.iml +++ b/my-app.iml @@ -12,7 +12,6 @@ - From f36074f3c264188fef7accd7856e5b8424201747 Mon Sep 17 00:00:00 2001 From: "kristof.rado@gmail.com" Date: Thu, 18 May 2017 23:07:57 +0200 Subject: [PATCH 8/8] Tested version 11test fail of 34 the webpage is running like it should. --- src/main/java/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 27fe5ea..5f86c00 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -117,4 +117,4 @@ public static void main(String[] args) { // User admin2 = new User("admin2", "admin2", 1); // userDataStore.add(admin2); // -} +