package cz.cvut.fel.restauracefel.server.service.controllers;
import cz.cvut.fel.restauracefel.server.service.controllers.AccountController;
import java.util.Iterator;
import cz.cvut.fel.restauracefel.hibernate.Account;
import cz.cvut.fel.restauracefel.hibernate.AccountStatusType;
import cz.cvut.fel.restauracefel.hibernate.DiscountType;
import cz.cvut.fel.restauracefel.hibernate.Table;
import cz.cvut.fel.restauracefel.hibernate.User;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Jambojak
*/
public class AccountControllerTest {
private static AccountController acInst;
public AccountControllerTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
acInst = AccountController.getInstance();
}
@AfterClass
public static void tearDownClass() throws Exception {
Account account = acInst.getAccountByName("testName");
if(account != null) account.delete();
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void testCreateAccount() {
boolean result;
result = acInst.createAccount("testName", 1, 0, 0, 0, 0, "testNote");
assertEquals(true, result);
}
@Test
public void testGetAccountsByAccountStatusType() {
boolean found = false;
Object[][] result = acInst.getAccountsByAccountStatusType(1);
if(result == null || result.length < 1) fail();
for(int i = 0; i < result.length; i ++){
if(result[i][1].equals("testName") && result[i][7].equals("testNote")) found = true;
}
assertEquals(true, found);
}
@Test
public void testGetAllAccounts() {
boolean found = false;
Account temp;
List<Account> result = acInst.getAllAccounts();
if(result == null || result.isEmpty()) fail();
Iterator iter = result.iterator();
while(iter.hasNext()){
temp = (Account) iter.next();
if(temp.getName().equals("testName") && temp.getNote().equals("testNote")) found = true;
}
assertEquals(true, found);
}
@Test
public void testGetAccountNames() {
boolean found = false;
String[] result = acInst.getAccountNames();
if(result == null || result.length < 1) fail();
for(int i = 0; i < result.length; i ++){
if(result[i].equals("testName")) found = true;
}
assertEquals(true, found);
}
@Test
public void testGetAccounts() {
boolean found = false;
Object[][] result = acInst.getAccounts();
if(result == null || result.length < 1) fail();
for(int i = 0; i < result.length; i ++){
if(result[i][1].equals("testName") && result[i][7].equals("testNote")) found = true;
}
assertEquals(true, found);
}
@Test
public void testUpdateAccount() {
boolean result;
Account account = acInst.getAccountByName("testName");
result = acInst.updateAccount(account.getAccountId(), 1);
assertEquals(true, result);
result = acInst.updateAccount(account.getAccountId(), "testName", 1, 0, 0, 0);
assertEquals(true, result);
result = acInst.updateAccount(account.getAccountId(), "", 1, 0, 0, 0);
assertEquals(false, result);
result = acInst.updateAccount(0, "testName", 1, 0, 0, 0);
assertEquals(false, result);
result = acInst.updateAccount(account.getAccountId(), "testName", 0, 0, 0, 0);
assertEquals(false, result);
}
@Test
public void testDeleteAccount() {
boolean result;
Account account = acInst.getAccountByName("testName");
result = acInst.deleteAccount(account.getAccountId());
assertEquals(true, result);
assertEquals(1, account.getIsDeleted());
account.setIsDeleted(0);
}
}