EntityManagerFactory emf = Persistence.createEntityManagerFactory("bookingDatabase");
final EntityManager em = emf.createEntityManager();
Hotel hotel = em.getReference(Hotel.class, 1l);
HotelBooking hb = new HotelBookingAction();
setField(hb, "em", em);
//setField(hb, "hotelSearch", hs);
setField(hb, "user", em.getReference(User.class, "gavin"));
setField(hb, "facesMessages", new FacesMessages());
setField(hb, "events", new Events() { @Override public void raiseEvent(String type, Object... params) { assert "bookingConfirmed".equals(type); } } );
setField(hb, "log", Logging.getLog(HotelBookingAction.class));
assert hb.selectHotel(hotel).equals("hotel");
User user = em.getReference(User.class, "gavin");
assert user!=null;
assert hb.bookHotel().equals("book");
Booking booking = (Booking) getField(hb, "booking");
assert booking!=null;
assert booking.getHotel()!=null;
assert booking.getUser()!=null;
booking.setCreditCard("1234123412341234");
booking.setCreditCardName("GAVIN A KING");
assert hb.setBookingDetails().equals("confirm");
getUserTransaction().begin();
assert hb.confirm().equals("confirmed");
getUserTransaction().commit();
em.close();
}