package dat255.grupp06.bibbla.backend.tasks;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import dat255.grupp06.bibbla.model.Book;
import dat255.grupp06.bibbla.utils.Message;
import dat255.grupp06.bibbla.utils.Session;
public class UnreserveJobTest extends TestCase {
private final Session SESSION = new Session();
private final Book TEST_BOOK = ReserveJobTest.TEST_BOOK;
private final Book TEST_BOOK2 = ReserveJobTest.TEST_BOOK2;
private final Book TEST_BOOK3 = ReserveJobTest.TEST_BOOK3;
@SuppressWarnings("serial")
private final List<Book> TEST_BOOKS = new ArrayList<Book>() {{
add(TEST_BOOK); add(TEST_BOOK2); add(TEST_BOOK3);
}};
private final ReserveJob reserveJob = new ReserveJob(
TEST_BOOK, ReserveJobTest.LIBRARY_CODE,
ReserveJobTest.CREDENTIALS, SESSION);
private final ReserveJob reserveJob2 = new ReserveJob(
TEST_BOOK2, ReserveJobTest.LIBRARY_CODE,
ReserveJobTest.CREDENTIALS, SESSION);
private final ReserveJob reserveJob3 = new ReserveJob(
TEST_BOOK3, ReserveJobTest.LIBRARY_CODE,
ReserveJobTest.CREDENTIALS, SESSION);
public UnreserveJobTest() {
TEST_BOOK.setUnreserveId("canceli4058195x01");
TEST_BOOK2.setUnreserveId("cancelb1758572x03");
TEST_BOOK3.setUnreserveId("canceli4105561x02");
}
public void testOneRun() {
if (ReserveJobTest.CREDENTIALS == null) return;
// Prepare: Get number of reservations and reserve the test book.
MyReservationsJob reservationsJob = new MyReservationsJob(
ReserveJobTest.CREDENTIALS, SESSION);
@SuppressWarnings("unchecked")
int beforeReserveSize = ((List<Book>) reservationsJob.run().obj).size();
Message reserveMessage = reserveJob.run();
assertNull(reserveMessage.error);
// Method call
UnreserveJob job = new UnreserveJob(TEST_BOOK,
ReserveJobTest.CREDENTIALS, SESSION);
Message message = job.run();
// Assertion
assertNull(message.error);
@SuppressWarnings("unchecked")
List<Book> myBooksAfterUnreserve = (List<Book>) message.obj;
assertFalse(myBooksAfterUnreserve.contains(TEST_BOOK));
@SuppressWarnings("unchecked")
int afterUnreserveSize = ((List<Book>) reservationsJob.run().obj).size();
assertEquals(beforeReserveSize, afterUnreserveSize);
}
public void testMultipleRun() {
if (ReserveJobTest.CREDENTIALS == null) return;
// Prepare: Get number of reservations and reserve the test books.
MyReservationsJob reservationsJob = new MyReservationsJob(
ReserveJobTest.CREDENTIALS, SESSION);
@SuppressWarnings("unchecked")
int beforeReserveSize = ((List<Book>) reservationsJob.run().obj).size();
ReserveJob[] reserveJobs = {reserveJob, reserveJob2, reserveJob3};
Message rmessage;
for (ReserveJob rjob : reserveJobs) {
rmessage = rjob.run();
assertNull(rmessage.error);
}
// Method call
UnreserveJob job = new UnreserveJob(TEST_BOOKS, ReserveJobTest.CREDENTIALS,
SESSION);
Message unreserveMessage = job.run();
// Assertion
assertNull(unreserveMessage.error);
@SuppressWarnings("unchecked")
List<Book> myBooksAfterUnreserve = (List<Book>) unreserveMessage.obj;
for(Book book : TEST_BOOKS) {
assertFalse(myBooksAfterUnreserve.contains(book));
}
@SuppressWarnings("unchecked")
int afterUnreserveSize = ((List<Book>) reservationsJob.run().obj).size();
assertEquals(beforeReserveSize, afterUnreserveSize);
}
}