/* * 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.news; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Calendar; import java.util.Date; import java.util.List; import org.json.JSONObject; 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.persist.LogbookEntry; import de.knurt.fam.core.model.persist.User; import de.knurt.fam.core.model.persist.booking.TimeBooking; import de.knurt.fam.core.model.persist.document.Job; import de.knurt.fam.news.NewsCollector; import de.knurt.fam.news.NewsCollectorDefault; import de.knurt.fam.news.NewsItem; import de.knurt.fam.news.NewsItemDefault; import de.knurt.fam.news.NewsSource; import de.knurt.fam.news.NewsSourceForLogbookEntries; import de.knurt.fam.news.NewsSourceForNewUser; import de.knurt.fam.news.NewsSourceForSessionProcessed; import de.knurt.fam.test.utils.FamIBatisTezt; import de.knurt.fam.test.utils.TeztBeanSimpleFactory; import de.knurt.heinzelmann.util.time.SimpleTimeFrame; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/test-dependencies.xml" }) public class NewsTest extends FamIBatisTezt { @Test public void constructNewsItem() { try { NewsItem ni = new NewsItemDefault(); ni.setEventEnds(new Date()); assertNotNull(ni); assertNotNull(ni.getEventEnds()); assertTrue("successed", true); } catch (Exception e) { fail("should not throw exception"); } } @Test public void constructNewsReporter() { try { NewsSource nr = new NewsSourceForNewUser(); assertNotNull(nr); @SuppressWarnings("unused") List<NewsItem> nis = nr.getNews(SimpleTimeFrame.getToday(), TeztBeanSimpleFactory.getAdmin()); assertTrue("successed", true); } catch (Exception e) { fail("should not throw exception"); } } @Test public void sessionProcessedNewsReporter() { this.clearDatabase(); User u = TeztBeanSimpleFactory.getAdmin(); u.insert(); NewsSource nr = new NewsSourceForSessionProcessed(); assertNotNull(nr); List<NewsItem> nis = nr.getNews(SimpleTimeFrame.getToday(), u); int nis_size_before = nis.size(); // insert a processed session TimeBooking booking = TeztBeanSimpleFactory.getNewValidBooking(); booking.getSessionTimeFrame().add(Calendar.YEAR, 1); booking.setBooked(); booking.setUsername(u.getUsername()); booking.insert(); booking.processSession(); Job document = new Job(); document.setJobId(booking.getId()); document.setUsername(u.getUsername()); document.setStep(2); document.setIdJobDataProcessing("foo"); document.setJobSurvey(new JSONObject()); document.insertOrUpdate(); // the test nis = nr.getNews(SimpleTimeFrame.getToday(), u); assertEquals(nis_size_before + 1, nis.size()); } @Test public void logbookNewsReporter() { try { NewsSource nr = new NewsSourceForLogbookEntries(false); assertNotNull(nr); List<NewsItem> nis = nr.getNews(SimpleTimeFrame.getToday(), TeztBeanSimpleFactory.getAdmin()); int nis_size_before = nis.size(); int assertNewLogbookEntries = 0; LogbookEntry logbook = TeztBeanSimpleFactory.getNewValidLogbookEntry(); assertNewLogbookEntries++; // because a new user was inserted logbook.setLogbookId(TeztBeanSimpleFactory.LOGBOOK_ID1); logbook.setDate(new Date()); logbook.insert(); assertNewLogbookEntries++; // because a new logbook was inserted assertNotNull(logbook.getDate()); nis = nr.getNews(SimpleTimeFrame.getToday(), TeztBeanSimpleFactory.getAdmin()); assertEquals(nis_size_before + assertNewLogbookEntries, nis.size()); // assert same date as lobook entry NewsItem back = nis.get(nis.size() - 1); assertEquals(back.getEventStarts().toString(), logbook.getDate().toString()); // update entry to past Calendar last_year = Calendar.getInstance(); last_year.add(Calendar.YEAR, -1); logbook.setDate(last_year.getTime()); logbook.update(); nis = nr.getNews(SimpleTimeFrame.getToday(), TeztBeanSimpleFactory.getAdmin()); assertEquals(nis_size_before + 1, nis.size()); // + 1 because of adminLogbook still there assertTrue("successed", true); } catch (Exception e) { fail("should not throw exception"); } } @Test public void constructNewsCollector() { try { NewsCollector nc = new NewsCollectorDefault(); assertNotNull(nc); @SuppressWarnings("unused") NewsSource ns = (NewsCollector) nc; nc.add(new NewsSourceForNewUser()); assertTrue("successed", true); } catch (Exception e) { fail("should not throw exception"); } } }