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