package no.niths.infrastructure.battlestation;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import no.niths.common.config.HibernateConfig;
import no.niths.common.config.TestAppConfig;
import no.niths.domain.battlestation.Console;
import no.niths.infrastructure.battlestation.interfaces.ConsoleRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class })
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager")
public class ConsoleRepositoryTest {
public static final String NAME = "Wii";
@Autowired
private ConsoleRepository consoleRepository;
@Test(expected = IllegalArgumentException.class)
public void whenInsertNull_persistenceShouldFail() {
consoleRepository.create(null);
}
@Test
public void whenConsoleIsCreated_ConsoleShouldBePersisted() {
int size = consoleRepository.getAll(null).size();
Console console = new Console();
console.setName(NAME);
consoleRepository.create(console);
assertThat(size + 1, is(equalTo(consoleRepository.getAll(null).size())));
}
@Test
public void whenGetById_ConsoleShouldBeReturned() {
int size = consoleRepository.getAll(null).size();
Console console = new Console();
console.setName(NAME);
consoleRepository.create(console);
assertThat(size + 1, is(equalTo(consoleRepository.getAll(null).size())));
Console result = consoleRepository.getById(console.getId());
assertThat(result, is(equalTo(console)));
result = consoleRepository.getById(999L);
assertThat(result, is(equalTo(null)));
}
@Test
public void whenConsoleIsUpdated_ConsoleShouldBeUpdated() {
int size = consoleRepository.getAll(null).size();
Console console = new Console();
console.setName(NAME);
consoleRepository.create(console);
assertThat(size + 1, is(equalTo(consoleRepository.getAll(null).size())));
console.setName("PS2");
consoleRepository.update(console);
assertThat("PS2", is(equalTo(consoleRepository.getById(console.getId()).getName())));
}
@Test
public void whenGetAll_allShouldBeReturned() {
int size = consoleRepository.getAll(null).size();
Console console = new Console();
console.setName(NAME);
consoleRepository.create(console);
Console otherConsole = new Console();
otherConsole.setName("PS2");
consoleRepository.create(otherConsole);
Console thirdConsole = new Console();
thirdConsole.setName("Xbox");
consoleRepository.create(thirdConsole);
assertThat(size + 3, is(equalTo(consoleRepository.getAll(null).size())));
assertThat(size + 1, is(equalTo(consoleRepository.getAll(console).size())));
}
}