/*
* Copyright 2009-2012 by KNURT Systeme (http://www.knurt.de)
*
* Licensed under the Creative Commons License Attribution-NonCommercial-ShareAlike 3.0 Unported;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.knurt.fam.test.unit.db.ibatis;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import de.knurt.fam.core.model.config.Facility;
import de.knurt.fam.core.model.persist.FacilityAvailability;
import de.knurt.fam.core.model.persist.User;
import de.knurt.fam.core.model.persist.booking.TimeBooking;
import de.knurt.fam.core.persistence.dao.FamDaoProxy;
import de.knurt.fam.core.persistence.dao.ibatis.BookingAdapterParameter;
import de.knurt.fam.core.persistence.dao.ibatis.FamSqlMapClientDaoSupport;
import de.knurt.fam.core.util.booking.CurrentFacilityStatus;
import de.knurt.fam.test.utils.AssertSomehowEquals;
import de.knurt.fam.test.utils.FamIBatisTezt;
import de.knurt.fam.test.utils.TeztBeanSimpleFactory;
import de.knurt.heinzelmann.util.time.SimpleTimeFrame;
/**
*
* @author Daniel Oltmanns <info@knurt.de>
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/test-dependencies.xml" })
public class FacilityStatusTest extends FamIBatisTezt {
/**
*
*/
@Test
public void everyFacilityHasAStatus() {
Facility facility = TeztBeanSimpleFactory.getFacility1();
CurrentFacilityStatus ds = facility.getFacilityStatus();
assertNotNull(ds);
assertEquals(CurrentFacilityStatus.class, ds.getClass());
}
/**
*
*/
@Test
public void everyFacilityStatusHasAFacilityAvailability() {
this.clearDatabase();
Facility facility = TeztBeanSimpleFactory.getFacility1();
CurrentFacilityStatus ds = facility.getFacilityStatus();
FacilityAvailability da = ds.getFacilityAvailability();
assertNotNull(da);
assertEquals(FacilityAvailability.class, da.getClass());
assertTrue(da.isCompletelyAvailable());
}
/**
*
*/
@Test
public void facilityAvailabilityBooked() {
this.clearDatabase();
TimeBooking b = TeztBeanSimpleFactory.getNewValidBooking();
b.setStartEnd(SimpleTimeFrame.getToday());
b.setBooked();
// brutal store - its not available because of starting in past
BookingAdapterParameter adapter = new BookingAdapterParameter(b);
FamSqlMapClientDaoSupport.sqlMap().insert("Booking.insert", adapter);
// selftest
assertEquals(1, FamDaoProxy.bookingDao().getUncanceledBookingsAndApplicationsIn(b.getFacility(), SimpleTimeFrame.getToday()).size());
assertEquals(1, FamDaoProxy.bookingDao().getAllUncanceledBookingsAndApplicationsOfToday(b.getFacility()).size());
Facility facility = TeztBeanSimpleFactory.getFacility1();
CurrentFacilityStatus ds = facility.getFacilityStatus();
FacilityAvailability da = ds.getFacilityAvailability();
assertNotNull(da);
assertEquals(FacilityAvailability.BOOKED_NOT_AVAILABLE, da.getAvailable().intValue());
assertTrue(da.isNotAvailableBecauseOfBooking());
}
/**
*
*/
@Test
public void facilityAvailabilityMaintenance() {
this.clearDatabase();
FacilityAvailability daPut = new FacilityAvailability();
daPut.setBasePeriodOfTime(SimpleTimeFrame.getToday());
daPut.setFacilityKey(TeztBeanSimpleFactory.KEY_FACILITY_BOOKABLE);
User testuser = TeztBeanSimpleFactory.getNewValidUser();
testuser.setUsername("testuser");
testuser.insert();
daPut.setUserSetThis(testuser);
daPut.setAvailable(FacilityAvailability.MAINTENANCE_NOT_AVAILABLE);
daPut.insert();
assertEquals(1, FamDaoProxy.facilityDao().getAll().size());
Facility facility = TeztBeanSimpleFactory.getFacility1();
CurrentFacilityStatus ds = facility.getFacilityStatus();
FacilityAvailability daGot = ds.getFacilityAvailability();
assertNotNull(daGot);
assertEquals(FacilityAvailability.MAINTENANCE_NOT_AVAILABLE, daGot.getAvailable().intValue());
assertTrue(daGot.isNotAvailableBecauseOfMaintenance());
AssertSomehowEquals.test(testuser, daGot.getUserSetThis());
}
/**
*
*/
@Test
public void facilityAvailabilityGeneralWithParent() {
this.clearDatabase();
FacilityAvailability daPut = new FacilityAvailability();
daPut.setBasePeriodOfTime(SimpleTimeFrame.getToday());
daPut.setFacilityKey(TeztBeanSimpleFactory.KEY_FACILITY_BOOKABLE_PARENT);
User testuser = TeztBeanSimpleFactory.getNewValidUser();
testuser.setUsername("testuser");
testuser.insert();
daPut.setUserSetThis(testuser);
daPut.setAvailable(FacilityAvailability.MAINTENANCE_NOT_AVAILABLE);
daPut.insert();
assertEquals(1, FamDaoProxy.facilityDao().getAll().size());
Facility facility = TeztBeanSimpleFactory.getFacility1();
CurrentFacilityStatus ds = facility.getFacilityStatus();
FacilityAvailability daGot = ds.getFacilityAvailability();
assertNotNull(daGot);
assertEquals(1, FamDaoProxy.facilityDao().getAll().size());
assertEquals(FacilityAvailability.MAINTENANCE_NOT_AVAILABLE, daGot.getAvailable().intValue());
assertTrue(daGot.isNotAvailableBecauseOfMaintenance());
AssertSomehowEquals.test(testuser, daGot.getUserSetThis());
}
}