/*
* 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;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import org.junit.AfterClass;
import org.junit.BeforeClass;
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.connector.FamConnector;
import de.knurt.fam.core.persistence.dao.config.FacilityConfigDao;
import de.knurt.fam.test.utils.TeztBeanSimpleFactory;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/test-dependencies.xml" })
public class SelfTest {
public SelfTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Test
public void envIsTest() {
assertTrue(FamConnector.isUnitTest());
}
@Test
public void configTestDirectoryExists() {
File f = new File(FamConnector.getConfigDirectory());
assertTrue("please init test configuration in dir: " + f.getAbsoluteFile(), f.exists());
assertTrue("cannot read test configuration dir: " + f.getAbsoluteFile(), f.canRead());
String[] neededFilesInDir = { "calendarDefaultViews.xml", "facilitiesConfigured.xml", "facilitiesPoolAbstract.xml", "facilitiesPoolBookable.xml", "facilitiesPoolBookingRulesAbstract.xml", "facilitiesPoolNoneBookable.xml", "fam_global.conf", "lang.properties",
"loader.xml", "logbooksConfigured.xml", "logbooksPool.xml", "mail.xml", "rolesAndRights.xml" };
for (String neededFileInDir : neededFilesInDir) {
File f2 = new File(f.getAbsoluteFile() + System.getProperty("file.separator") + "config" + System.getProperty("file.separator") + neededFileInDir);
assertTrue("missing test configuration file: " + f2.getAbsoluteFile(), f2.exists());
assertTrue("cannot test configuration file: " + f2.getAbsoluteFile(), f2.canRead());
}
String[] neededDirs = { "files", "template", "plugins" };
for (String neededDir : neededDirs) {
File f2 = new File(f.getAbsoluteFile() + System.getProperty("file.separator") + neededDir);
assertTrue("missing test configuration dir: " + f2.getAbsoluteFile(), f2.exists());
assertTrue("cannot test configuration dir: " + f2.getAbsoluteFile(), f2.canRead());
assertTrue("is not a dir: " + f2.getAbsoluteFile(), f2.isDirectory());
}
}
private boolean isBookableAndKnown(String fkey) {
return !FacilityConfigDao.facility(fkey).isUnknown() && FacilityConfigDao.bookable(fkey);
}
@Test
public void needDemoConfig() {
String assertionFailHint = "THIS IS NOT THE TEST CONFIGURATION";
assertTrue(assertionFailHint, FamConnector.isDev());
assertNotNull(assertionFailHint, FacilityConfigDao.facility("indoor"));
assertFalse(FacilityConfigDao.facility("indoor").isUnknown());
assertFalse(assertionFailHint, this.isBookableAndKnown("playground"));
assertTrue(assertionFailHint, this.isBookableAndKnown("sportsHall"));
assertTrue(assertionFailHint, this.isBookableAndKnown("ballBath"));
assertTrue(assertionFailHint, this.isBookableAndKnown("slide"));
assertTrue(assertionFailHint, this.isBookableAndKnown("teetertotter"));
assertTrue(assertionFailHint, this.isBookableAndKnown("schoolbus"));
assertNotNull(assertionFailHint, FacilityConfigDao.facility(TeztBeanSimpleFactory.KEY_FACILITY_BOOKABLE_PARENT));
assertTrue(assertionFailHint, this.isBookableAndKnown(TeztBeanSimpleFactory.KEY_FACILITY_BOOKABLE));
assertTrue(assertionFailHint, this.isBookableAndKnown(TeztBeanSimpleFactory.KEY_FACILITY_BOOKABLE_QUEUE));
}
}