package model.test; import main.error.VideothekException; import model.PriceCategory; import model.Video; import model.VideoUnit; import model.data.exceptions.RecordNotFoundException; import model.exceptions.FalseIDException; /** * VideoTest.java * * @author Christopher Bertels (chbertel@uos.de) * @date 16.09.2008 */ public class VideoTest extends ModelTest { public void testConstructor() { try { Video v = new Video("test", 1960, PriceCategory.findByID(1), 18, 3); assertTrue(Video.findAll().contains(v)); assertEquals(3, v.getVideoUnits().size()); v.delete(); } catch (VideothekException e) { e.printStackTrace(); } } public void testSetMinID() { try { Video.setMinID(-4); } catch (VideothekException e) { assertEquals(FalseIDException.class, e.getClass()); } } public void testDelete() { Video v = null; try { v = new Video("test", 1960, PriceCategory.findByID(1), 18, 3); } catch (VideothekException e) { e.printStackTrace(); } assertNotNull(v); assertTrue(Video.findAll().contains(v)); try { v.delete(); } catch (VideothekException e1) { assertTrue(false); e1.printStackTrace(); } assertFalse(Video.findAll().contains(v)); assertTrue(v.isDeleted()); assertEquals(0, v.getVideoUnits().size()); try { Video.findByID(v.getID()); } catch (VideothekException e) { assertEquals(RecordNotFoundException.class, e.getClass()); } } public void testGetSortedVideoUnits() { boolean passedAvailable = false; Video v = null; try { v = Video.findByID(2); } catch (RecordNotFoundException e) { e.printStackTrace(); } assertNotNull(v); assertTrue(v.getVideoUnits().size() > 1); // TODO: test muss wieder angepasst werden. // ein paar ausleihungen erstellen // LinkedList<VideoUnit> unitsToRent = new LinkedList<VideoUnit>(v.getVideoUnits()); // unitsToRent.removeLast(); // // for (VideoUnit unit : unitsToRent) // { // try // { // new InRent(Customer.findByID(1), unit, // new Date(), 2); // } // catch (VideothekException e) // { // e.printStackTrace(); // } // } // assertEquals(v.getVideoUnits().size() - 1, unitsToRent.size()); for (VideoUnit unit : v.getSortedVideoUnits()) { // wenn unit nicht ausgeliehen und wir noch nicht bei einem // ausgeliehenen waren // merken; es sollten jetzt nur noch ausgeliehene kommen.. if (unit.isRented() && !passedAvailable) { passedAvailable = true; } if (!unit.isRented() && passedAvailable) { // hier sollte er nie hinkommen! assertTrue(false); } } } }