package service;
import api.v1.Customer;
import exceptions.PoseidonException;
import models.CustomerModel;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import util.InMemoryDbTest;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class CustomerServiceTest extends InMemoryDbTest {
@Test
public void listCustomers(){
CustomerService service = new CustomerService(fakeUser);
List<CustomerModel> customers = service.findAll();
assertNotNull("null customerlist",customers);
assertEquals("customerlist",3,customers.size());
}
@Test
public void createNewCustomer(){
Customer aCustomer = new Customer();
aCustomer.name = "Test customer";
aCustomer.password = "test000";
aCustomer.username = "tester";
aCustomer.info = "Info";
CustomerModel newCustomer = new CustomerService(fakeUser).createOrUpdate(aCustomer);
assertNotNull("New customer", newCustomer);
assertNotNull("New customer id",newCustomer.id);
CustomerModel customerFromDb = new CustomerService(fakeUser).findByName("Test customer");
assertEquals("UserID",newCustomer.id,customerFromDb.id);
assertEquals("Name",newCustomer.name,customerFromDb.name);
assertEquals("Username",newCustomer.username,customerFromDb.username);
assertEquals("Password",newCustomer.password,customerFromDb.password);
assertEquals("Info",newCustomer.info,customerFromDb.info);
}
@Test(expected = PoseidonException.class)
public void checkExistingCustomerName(){
Customer aCustomer = new Customer();
aCustomer.name = "Aibel AS";
aCustomer.username = "tester";
aCustomer.info = "Info";
CustomerModel c = new CustomerService(fakeUser).checkCustomerExists(aCustomer);
}
@Test(expected = PoseidonException.class)
public void checkExistingCustomerUsername(){
Customer aCustomer = new Customer();
aCustomer.username = "aconacmg";
CustomerModel c = new CustomerService(fakeUser).checkCustomerExists(aCustomer);
}
@Test(expected = PoseidonException.class)
public void checkExistingCustomerNameKundedb(){
Customer aCustomer = new Customer();
aCustomer.name = "Kunde Kundesen";
CustomerModel c = new CustomerService(fakeUser).checkCustomerExists(aCustomer);
}
@Test(expected = PoseidonException.class)
public void checkExistingCustomerUserNameKundedb(){
Customer aCustomer = new Customer();
aCustomer.username = "kunde_k";
CustomerModel c = new CustomerService(fakeUser).checkCustomerExists(aCustomer);
}
@Test
public void checkNotExistingCustomer(){
Customer aCustomer = new Customer();
aCustomer.username = "xyz";
CustomerModel c = new CustomerService(fakeUser).checkCustomerExists(aCustomer);
assertNull("customer ",c);
}
}