diff --git a/pom.xml b/pom.xml index 8db3f0d..a782247 100644 --- a/pom.xml +++ b/pom.xml @@ -31,9 +31,34 @@ 20180813 + + junit + junit + 4.12 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + org.junit.jupiter + junit-jupiter-api + RELEASE + test + + + junit + junit + 4.12 + test + + 1.8 1.8 diff --git a/src/main/java/com/queststore/Controller/StudentArtifactTransaction.java b/src/main/java/com/queststore/Controller/StudentArtifactTransaction.java index 0f04fb5..31bedba 100644 --- a/src/main/java/com/queststore/Controller/StudentArtifactTransaction.java +++ b/src/main/java/com/queststore/Controller/StudentArtifactTransaction.java @@ -12,6 +12,7 @@ public class StudentArtifactTransaction extends StudentTransaction { private UserService userService = new UserService(new UserDAOSql(), new ClassDAOSql(), new TransactionDAOSql()); + //To test boolean canBeBought(Card card, User user) throws DaoException { int balance = userService.getCoinBalance(user.getId()); return balance >= card.getValue(); diff --git a/src/main/java/com/queststore/DAO/DBCPDataSource.java b/src/main/java/com/queststore/DAO/DBCPDataSource.java index b868bc7..7a914d4 100644 --- a/src/main/java/com/queststore/DAO/DBCPDataSource.java +++ b/src/main/java/com/queststore/DAO/DBCPDataSource.java @@ -7,9 +7,9 @@ class DBCPDataSource { - private static final String URL = "jdbc:postgresql://localhost:5432/queststore"; - private static final String USER = "postgres"; - private static final String PASS = "12345"; + private static final String URL = "jdbc:postgresql://localhost:5432/public"; + private static final String USER = "gosteek"; + private static final String PASS = "Patryk342351"; private static BasicDataSource ds = new BasicDataSource(); static { diff --git a/src/main/java/com/queststore/Services/ConfigurationService.java b/src/main/java/com/queststore/Services/ConfigurationService.java deleted file mode 100644 index b3f84c6..0000000 --- a/src/main/java/com/queststore/Services/ConfigurationService.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.queststore.Services; - -public class ConfigurationService { -} diff --git a/src/main/java/com/queststore/Services/ItemCardAdd.java b/src/main/java/com/queststore/Services/ItemCardAdd.java index 81d0d82..62da38e 100644 --- a/src/main/java/com/queststore/Services/ItemCardAdd.java +++ b/src/main/java/com/queststore/Services/ItemCardAdd.java @@ -17,6 +17,15 @@ import java.util.List; public class ItemCardAdd implements HttpHandler { + private CardDAO cardDAO; + + ItemCardAdd(CardDAO cardDAO) { + this.cardDAO = cardDAO; + } + + public ItemCardAdd() { + this.cardDAO = new CardDAOSql(); + } @Override public void handle(HttpExchange httpExchange) throws IOException { @@ -53,14 +62,12 @@ public void handle(HttpExchange httpExchange) throws IOException { } public List addCardToDB(List items) throws DaoException { - - CardDAO cardDAO = new CardDAOSql(); List cardList = new ArrayList<>(); int artifactTypeId = 2; Card newCard = new Card(4, items.get(0), items.get(2), new Categories(1, "easy"), null, Integer.parseInt((String) items.get(1)), new CardTypes(artifactTypeId, "artifact"), true); cardDAO.add(newCard); - cardList.addAll(cardDAO.getCardsOfType(cardDAO.getCardTypeById(artifactTypeId))); + cardList.add(newCard); return cardList; } diff --git a/src/main/java/com/queststore/Services/ItemCardUpdate.java b/src/main/java/com/queststore/Services/ItemCardUpdate.java index c97213d..0123548 100644 --- a/src/main/java/com/queststore/Services/ItemCardUpdate.java +++ b/src/main/java/com/queststore/Services/ItemCardUpdate.java @@ -17,6 +17,15 @@ import java.util.List; public class ItemCardUpdate implements HttpHandler { + private CardDAO cardDAO; + + ItemCardUpdate(CardDAO cardDAO) { + this.cardDAO = cardDAO; + } + + public ItemCardUpdate() { + this.cardDAO = new CardDAOSql(); + } @Override public void handle(HttpExchange httpExchange) throws IOException { @@ -51,8 +60,7 @@ public void handle(HttpExchange httpExchange) throws IOException { } - private List updateCardInDB(List items) throws DaoException { - CardDAO cardDAO = new CardDAOSql(); + List updateCardInDB(List items) throws DaoException { List cardList = new ArrayList<>(); int artifactTypeId = 2; @@ -61,7 +69,5 @@ private List updateCardInDB(List items) throws DaoException { cardDAO.update(createCart); cardList.addAll(cardDAO.getCardsOfType(cardDAO.getCardTypeById(artifactTypeId))); return cardList; - } - } diff --git a/src/main/java/com/queststore/Services/UserCardAdd.java b/src/main/java/com/queststore/Services/UserCardAdd.java index ae404e7..a4a9a15 100644 --- a/src/main/java/com/queststore/Services/UserCardAdd.java +++ b/src/main/java/com/queststore/Services/UserCardAdd.java @@ -19,6 +19,15 @@ import java.util.Random; public class UserCardAdd implements HttpHandler { + private ClassDAO classDAO; + + public UserCardAdd(ClassDAO classDAO) { + this.classDAO = classDAO; + } + + public UserCardAdd() { + this.classDAO = new ClassDAOSql(); + } @Override public void handle(HttpExchange httpExchange) throws IOException { @@ -70,8 +79,7 @@ private List addUser(List items) throws DaoException { return userList; } - private User createStudent (List items) throws DaoException { - ClassDAO classDAO = new ClassDAOSql(); + User createStudent (List items) throws DaoException { User newUser = new User.UserBuilder() .firstName(items.get(items.size()-2)) diff --git a/src/main/java/com/queststore/Services/UserService.java b/src/main/java/com/queststore/Services/UserService.java index eba2070..2775878 100644 --- a/src/main/java/com/queststore/Services/UserService.java +++ b/src/main/java/com/queststore/Services/UserService.java @@ -16,11 +16,18 @@ public class UserService { private UserDAO userDAO; private ClassDAO classDAO; private TransactionDAO transactionDAO; - private ConfigurationDAO configurationDAOsql = new ConfigurationDAOSql(); + private ConfigurationDAO configurationDAOsql; + public UserService(UserDAO userDAO, ClassDAO classDAO, TransactionDAO transactionDAO) { this.userDAO = userDAO; this.classDAO = classDAO; this.transactionDAO = transactionDAO; + if(configurationDAOsql==null) this.configurationDAOsql = new ConfigurationDAOSql(); + } + + UserService(UserDAO userDAO, ClassDAO classDAO, TransactionDAO transactionDAO, ConfigurationDAO configurationDAO) { + this(userDAO, classDAO, transactionDAO); + this.configurationDAOsql = configurationDAO; } List getAllStudentsInMentorClass(int mentorId) throws DaoException { @@ -42,7 +49,7 @@ public int getCoinBalance(int userId) throws DaoException { questsList.addAll(transactionDAO.getTransactions(userId, questId)); artifactsList.addAll(transactionDAO.getTransactions(userId, artifactId)); - Integer coinBalance = 0; + int coinBalance = 0; for (Transaction transaction : questsList) { if (transaction.getTransactionStatus().getName().equals("accepted")) { coinBalance += transaction.getCost(); @@ -58,12 +65,12 @@ public int getCoinBalance(int userId) throws DaoException { return coinBalance; } - public String calculateUserLvl(int userId) throws DaoException{ + public String calculateUserLvl(int userId) throws DaoException { List questsList = new ArrayList<>(); int questId = 1; questsList.addAll(transactionDAO.getTransactions(userId, questId)); - Integer coinBalance = 0; + int coinBalance = 0; for (Transaction transaction : questsList) { if (transaction.getTransactionStatus().getName().equals("accepted")) { coinBalance += transaction.getCost(); diff --git a/src/main/java/com/queststore/helpers/CookieHelper.java b/src/main/java/com/queststore/helpers/CookieHelper.java index ab56760..3ec3612 100644 --- a/src/main/java/com/queststore/helpers/CookieHelper.java +++ b/src/main/java/com/queststore/helpers/CookieHelper.java @@ -12,7 +12,7 @@ public class CookieHelper { private static final String SESSION_COOKIE_NAME = "session_id"; - private List parseCookies(String cookieStr) { + public List parseCookies(String cookieStr) { List cookies = new ArrayList<>(); if (cookieStr == null || cookieStr.isEmpty()) { @@ -23,11 +23,10 @@ private List parseCookies(String cookieStr) { String[] pair = cookie.split("="); cookies.add(new HttpCookie(pair[0].trim(), pair[1].trim().replaceAll("\"", ""))); } - return cookies; } - private Optional getCookieByName(List cookies) { + public Optional getCookieByName(List cookies) { for (HttpCookie cookie : cookies) { if (cookie.getName().equals(SESSION_COOKIE_NAME)) { return Optional.of(cookie); @@ -43,6 +42,7 @@ public HttpCookie generateNewSessionIdCookie() { public Optional getSessionIdCookie(HttpExchange exchange) { String cookieStr = exchange.getRequestHeaders().getFirst("Cookie"); + System.out.println(cookieStr); List cookies = parseCookies(cookieStr); return getCookieByName(cookies); } diff --git a/src/test/java/com/queststore/Services/ItemCardAddTest.java b/src/test/java/com/queststore/Services/ItemCardAddTest.java new file mode 100644 index 0000000..0524a0e --- /dev/null +++ b/src/test/java/com/queststore/Services/ItemCardAddTest.java @@ -0,0 +1,41 @@ +package com.queststore.Services; + +import com.queststore.DAO.CardDAO; +import com.queststore.DAO.DaoException; +import com.queststore.Model.Card; +import com.queststore.Model.CardTypes; +import com.queststore.Model.Categories; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; + +public class ItemCardAddTest { + + @Test + public void addCardToDB() throws DaoException { + CardDAO cardDAOMock = mock(CardDAO.class); + ItemCardAdd itemCardAdd = new ItemCardAdd(cardDAOMock); + + List items = new ArrayList<>(); + items.add("1"); + items.add("2"); + items.add("3"); + items.add("4"); + + Card card = new Card(4, items.get(0), items.get(2), new Categories(1, "easy"), null, + Integer.parseInt(items.get(1)), new CardTypes(2, "artifact"), true); + + List listOfCards = new ArrayList<>(); + listOfCards.add(card); + + assertEquals(itemCardAdd.addCardToDB(items).get(0).getValue(), listOfCards.get(0).getValue()); + assertEquals(itemCardAdd.addCardToDB(items).get(0).getId(), listOfCards.get(0).getId()); + assertEquals(itemCardAdd.addCardToDB(items).get(0).getDescription(), listOfCards.get(0).getDescription()); + assertEquals(itemCardAdd.addCardToDB(items).get(0).getName(), listOfCards.get(0).getName()); + } + +} \ No newline at end of file diff --git a/src/test/java/com/queststore/Services/ItemCardUpdateTest.java b/src/test/java/com/queststore/Services/ItemCardUpdateTest.java new file mode 100644 index 0000000..7336861 --- /dev/null +++ b/src/test/java/com/queststore/Services/ItemCardUpdateTest.java @@ -0,0 +1,41 @@ +package com.queststore.Services; + +import com.queststore.DAO.CardDAO; +import com.queststore.DAO.DaoException; +import com.queststore.Model.Card; +import com.queststore.Model.CardTypes; +import com.queststore.Model.Categories; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class ItemCardUpdateTest { + + @Test + public void updateCardInDB() throws DaoException { + CardDAO cardDAOMock = mock(CardDAO.class); + + ItemCardUpdate itemCardUpdate = new ItemCardUpdate(cardDAOMock); + + List items = new ArrayList<>(); + items.add("1"); + items.add("dupa"); + items.add("1"); + items.add("dupa"); + + Card card = new Card(Integer.parseInt(items.get(0)), items.get(1), items.get(3), new Categories(1, "easy"), null, + Integer.parseInt(items.get(2)), new CardTypes(2, "artifact"), true); + + List listOfCards = new ArrayList<>(); + listOfCards.add(card); + + when(cardDAOMock.getCardsOfType(cardDAOMock.getCardTypeById(2))).thenReturn(listOfCards); + + assertEquals(listOfCards, itemCardUpdate.updateCardInDB(items)); + } +} \ No newline at end of file diff --git a/src/test/java/com/queststore/Services/JSONparserTest.java b/src/test/java/com/queststore/Services/JSONparserTest.java new file mode 100644 index 0000000..57bda0f --- /dev/null +++ b/src/test/java/com/queststore/Services/JSONparserTest.java @@ -0,0 +1,50 @@ +package com.queststore.Services; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + +import com.sun.net.httpserver.HttpExchange; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class JSONparserTest { + + private JSONparser jsonParser; + + @BeforeEach + void setup() { + jsonParser = new JSONparser(); + } + + @AfterEach + void tearDown() { + jsonParser = null; + } + + @Test + void parseJSONlistToArray() throws java.io.IOException { + String json = "[\n" + + " \"my/path/old\",\n" + + " \"my/path/new\"\n" + + " ]"; + System.out.println(jsonParser.parseJSONlistToArray(json)); + assertEquals("my/path/old", jsonParser.parseJSONlistToArray(json).get(0)); + assertEquals("my/path/new", jsonParser.parseJSONlistToArray(json).get(1)); + } + + @Test + void convertJSONtoString() throws IOException { + HttpExchange httpExchangeMock = mock(HttpExchange.class); + String bodyString = "sampleRequestBody"; + InputStream inputStream = new ByteArrayInputStream(bodyString.getBytes()); + when(httpExchangeMock.getRequestBody()).thenReturn(inputStream); + assertEquals(bodyString, jsonParser.convertJSONtoString(httpExchangeMock)); + } +} \ No newline at end of file diff --git a/src/test/java/com/queststore/Services/UserCardAddTest.java b/src/test/java/com/queststore/Services/UserCardAddTest.java new file mode 100644 index 0000000..1dd988a --- /dev/null +++ b/src/test/java/com/queststore/Services/UserCardAddTest.java @@ -0,0 +1,42 @@ +package com.queststore.Services; + +import com.queststore.DAO.ClassDAO; +import com.queststore.DAO.DaoException; +import com.queststore.Model.User; +import com.queststore.Model.UserType; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.Assert.*; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.*; + +class UserCardAddTest { + + @Test + void createStudentTest2() throws DaoException { + ClassDAO classDAOMock = mock(ClassDAO.class); + when(classDAOMock.getClassId(any(String.class))).thenReturn(java.util.Optional.of(1)); + UserCardAdd userCardAdd = new UserCardAdd(classDAOMock); + List items = new ArrayList<>(); + items.add("someEmailName"); + items.add("someFirstName"); + items.add("someLastName"); + + User user = userCardAdd.createStudent(items); + User expectedUser = new User( + 1, + "someFirstName", + "someLastName", + "someEmailName", + null, + null, + new UserType(1, "student") + ); + + assertEquals(expectedUser.getFirstName(), user.getFirstName()); + assertEquals(expectedUser.getLastName(), user.getLastName()); + } +} \ No newline at end of file diff --git a/src/test/java/com/queststore/Services/UserServiceTest.java b/src/test/java/com/queststore/Services/UserServiceTest.java new file mode 100644 index 0000000..777956c --- /dev/null +++ b/src/test/java/com/queststore/Services/UserServiceTest.java @@ -0,0 +1,78 @@ +package com.queststore.Services; + +import com.queststore.DAO.*; +import com.queststore.Model.*; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class UserServiceTest { + + + @Test + public void getCoinBalance() throws DaoException { + User user = new User(100, "kuba", "buba", "kubabuba@kupa.pl", null, null, new UserType(0, "student")); + TransactionDAO transactionDAOMock = mock(TransactionDAO.class); + + UserService userService = new UserService(new UserDAOSql(), new ClassDAOSql(), transactionDAOMock); + + TransactionStatus transactionStatus = new TransactionStatus(1, "accepted"); + when(transactionDAOMock.getTransactions(100, 1)).thenReturn(Collections.singletonList(new Transaction(1, null, null, null, transactionStatus, 40))); + when(transactionDAOMock.getTransactions(100, 2)).thenReturn(Collections.singletonList(new Transaction(1, null, null, null, transactionStatus, 30))); + + assertEquals(10, userService.getCoinBalance(user.getId())); + } + + @Test + public void calculateUserLvl() throws DaoException { + TransactionDAO transactionDAOMock = getTransactionDAOMock(); + ConfigurationDAO configurationDAOMock = getConfigurationDAOMock(); + + UserService userService = new UserService( + null, + null, + transactionDAOMock, + configurationDAOMock + ); + + assertEquals("pro", userService.calculateUserLvl(100)); + } + + private TransactionDAO getTransactionDAOMock() throws DaoException { + TransactionDAO transactionDAOMock = mock(TransactionDAOSql.class); + List transactionList = new ArrayList<>(); + transactionList.add(new Transaction( + 0, + null, + null, + null, + new TransactionStatus(1, "accepted"), + 120 + )); + when(transactionDAOMock.getTransactions(100, 1)).thenReturn(transactionList); + return transactionDAOMock; + } + + private ConfigurationDAO getConfigurationDAOMock() throws DaoException { + ConfigurationDAO configurationDAOMock = mock(ConfigurationDAOSql.class); + List experienceLevels = getSampleExperienceLevelsList(); + when(configurationDAOMock.getAllLevels()).thenReturn(experienceLevels); + return configurationDAOMock; + } + + private List getSampleExperienceLevelsList() { + List experienceLevels = new ArrayList<>(); + experienceLevels.add(new ExperienceLevel(1, "noob0", 0)); + experienceLevels.add(new ExperienceLevel(2, "noob2", 30)); + experienceLevels.add(new ExperienceLevel(3, "noob3", 50)); + experienceLevels.add(new ExperienceLevel(4, "good", 80)); + experienceLevels.add(new ExperienceLevel(5, "pro", 119)); + return experienceLevels; + } +} \ No newline at end of file diff --git a/src/test/java/com/queststore/helpers/CookieHelperTest.java b/src/test/java/com/queststore/helpers/CookieHelperTest.java new file mode 100644 index 0000000..cdc6679 --- /dev/null +++ b/src/test/java/com/queststore/helpers/CookieHelperTest.java @@ -0,0 +1,21 @@ +package com.queststore.helpers; + +import org.junit.*; + +import java.net.HttpCookie; +import java.util.List; + +import static org.junit.Assert.*; + +public class CookieHelperTest { + + @Test + public void parseCookies() { + CookieHelper cookieHelper = new CookieHelper(); + List cookies = cookieHelper.parseCookies("session_id=\"c212a7ae-f42b-4b3d-ace5-3b76711867fe\";test_id=\"asdasdasdasdasdasdsadasdasdas\""); + + assertEquals("c212a7ae-f42b-4b3d-ace5-3b76711867fe", cookies.get(0).getValue()); + assertEquals("asdasdasdasdasdasdsadasdasdas", cookies.get(1).getValue()); + + } +} \ No newline at end of file