/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package cz.muni.fi.pa165.ddtroops.persistence;
import cz.muni.fi.pa165.ddtroops.daointerfaces.HeroDAO;
import cz.muni.fi.pa165.ddtroops.daointerfaces.RaceDAO;
import cz.muni.fi.pa165.ddtroops.daointerfaces.SkillDAO;
import cz.muni.fi.pa165.ddtroops.daointerfaces.SquadDAO;
import cz.muni.fi.pa165.ddtroops.entities.Gender;
import cz.muni.fi.pa165.ddtroops.entities.Hero;
import cz.muni.fi.pa165.ddtroops.entities.Race;
import cz.muni.fi.pa165.ddtroops.entities.Skill;
import cz.muni.fi.pa165.ddtroops.entities.Squad;
import java.util.List;
import junit.framework.TestCase;
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.transaction.annotation.Transactional;
/**
* Testclass for SquadDAOImpl entity.
*
* @author Erik Vaněk
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:testAppContext.xml" })
@Transactional
public class SquadDAOTest extends TestCase{
private Squad squad;
@Autowired
private SquadDAO squadDAO;
@Autowired
private RaceDAO raceDao;
@Autowired
private HeroDAO heroDao;
@Autowired
private SkillDAO skillDao;
public Squad getSquad(){
Race race = getRace();
raceDao.create(race);
Skill skill = getSkill();
skillDao.create(skill);
Hero leader = getHero(race, skill);
heroDao.create(leader);
Squad squad = new Squad();
squad.getMembers().add(leader);
squad.setLeader(leader);
squad.setGold(500L);
squad.setName("TestSquad");
squad.setTask("Tough task");
return squad;
}
@Test
public void testHasIdAfterCreation(){
squad = getSquad();
squadDAO.create(squad);
assertNotNull(squad.getId());
}
@Test
public void testGetById(){
squad = getSquad();
squadDAO.create(squad);
Squad squadFromDB = squadDAO.getById(squad.getId());
assertEquals(squadFromDB, squad);
}
@Test
public void testCreate(){
squad = getSquad();
squadDAO.create(squad);
assertNotNull(squad.getId());
}
@Test
public void testUpdate(){
squad = getSquad();
squadDAO.create(squad);
squad.setTask("Tougher task");
squadDAO.update(squad);
Squad squadFromDB = squadDAO.getById(squad.getId());
assertEquals("Tougher task", squad.getTask());
assertEquals(squadFromDB.getGold(), squad.getGold());
}
@Test
public void testDelete(){
squad = getSquad();
List<Squad> squads = squadDAO.getAll();
for (Squad s : squads){
squadDAO.delete(s);
}
List<Squad> deletedSquads = squadDAO.getAll();
assertTrue(deletedSquads.isEmpty());
}
public Race getRace(){
Race race = new Race();
race.setName("SimpleRace");
race.setDescription("Descript");
race.setStrength(new Byte("61"));
race.setDexterity(new Byte("61"));
race.setConstitution(new Byte("15"));
race.setIntelligence(new Byte("51"));
race.setWisdom(new Byte("41"));
race.setCharisma(new Byte("14"));
return race;
}
public Hero getHero(Race race, Skill skill){
Hero leader = new Hero();
leader.setName("Híro");
leader.setGender(Gender.MALE);
leader.setBelief("althurist");
leader.setProfession("Gunter");
leader.setRace(race);
leader.setStrength(Byte.MIN_VALUE);
leader.setDexterity(Byte.MIN_VALUE);
leader.setConstitution(Byte.MIN_VALUE);
leader.setIntelligence(Byte.MIN_VALUE);
leader.setStrength(Byte.MIN_VALUE);
leader.setWisdom(Byte.MIN_VALUE);
leader.setCharisma(Byte.MIN_VALUE);
leader.addSkill(skill);
leader.setXp(500L);
return leader;
}
public Skill getSkill(){
Skill skill = new Skill();
skill.setDescription("Skillerx");
skill.setName("DescSkillerx");
skill.setMinXP(50L);
skill.setProfession("Proff");
return skill;
}
@Test
public void testGetAll(){
squad = getSquad();
Race race = getRace();
raceDao.create(race);
Skill skill = getSkill();
skillDao.create(skill);
Hero leader = getHero(race, skill);
heroDao.create(leader);
Squad anotherSquad = new Squad();
anotherSquad.setDescription("Newly created squad");
anotherSquad.setGold(500L);
anotherSquad.setName("TestSquad");
anotherSquad.getMembers().add(leader);
anotherSquad.setLeader(leader);
anotherSquad.setTask("Tough task");
squadDAO.create(squad);
squadDAO.create(anotherSquad);
List<Squad> squads = squadDAO.getAll();
assertTrue(squads.contains(squad));
assertTrue(squads.contains(anotherSquad));
}
@Test
public void testAddMember(){
Race race = getRace();
Squad squadS = getSquad();
Skill skill = getSkill();
Hero leader = getHero(race, skill);
raceDao.create(race);
skillDao.create(skill);;
squadDAO.create(squadS);
heroDao.create(leader);
squadS.getMembers().add(leader);
assertTrue(squadS.getMembers().contains(leader));
}
@Test
public void testRemoveMember(){
Race race = getRace();
Skill skill = getSkill();
Hero leader = getHero(race, skill);
squad = new Squad();
squad.getMembers().add(leader);
squad.setLeader(leader);
squad.setGold(5500L);
squad.setName("TestSquad 2");
squad.setTask("Tougher task");
raceDao.create(race);
skillDao.create(skill);
heroDao.create(leader);
squadDAO.create(squad);
assertTrue(squad.getMembers().contains(leader));
squad.getMembers().remove(leader);
assertTrue(!squad.getMembers().contains(leader));
}
}