/*
* $HeadURL$
* $Id$
* Copyright (c) 2006-2012 by Public Library of Science http://plos.org http://ambraproject.org
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless 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 org.ambraproject.models;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.testng.annotations.Test;
import java.io.Serializable;
import java.util.Calendar;
import static org.testng.Assert.*;
/**
* @author Alex Kudlick 3/7/12
*/
public class TrackbackTest extends BaseHibernateTest {
@Test
public void testSaveTrackback() {
long testStart = Calendar.getInstance().getTimeInMillis();
Trackback trackback = new Trackback(123142l, "http://www.imdb.com/title/tt1843230/episodes?year=2012");
trackback.setExcerpt("Regina and Mr. Gold play dirty politics and take opposite sides when Emma runs...");
trackback.setBlogName("My Cool Blog");
Serializable id = hibernateTemplate.save(trackback);
Trackback storedTrackback = (Trackback) hibernateTemplate.get(Trackback.class, id);
assertNotNull(storedTrackback, "didn't store trackback");
assertEquals(storedTrackback.getArticleID(), trackback.getArticleID(), "Stored incorrect article id");
assertEquals(storedTrackback.getUrl(), trackback.getUrl(), "stored incorrect url");
assertEquals(storedTrackback.getExcerpt(), trackback.getExcerpt(), "stored incorrect excerpt");
assertNotNull(storedTrackback.getCreated(), "trackback didn't get created date set");
assertTrue(storedTrackback.getCreated().getTime() >= testStart, "created date wasn't after test start");
}
@Test
public void testUpdate() {
long testStart = Calendar.getInstance().getTimeInMillis();
Trackback trackback = new Trackback(12314l, "http://www.imdb.com/title/tt1843230/");
trackback.setTitle("title");
trackback.setBlogName("blog name");
trackback.setExcerpt("excerpt");
Serializable id = hibernateTemplate.save(trackback);
String newUrl = "http://www.someblog.net";
trackback.setUrl(newUrl);
hibernateTemplate.update(trackback);
Trackback storedTrackback = (Trackback) hibernateTemplate.get(Trackback.class, id);
assertEquals(storedTrackback.getUrl(), newUrl, "trackback didn't get url updated");
assertNotNull(storedTrackback.getLastModified(), "trackback didn't get last modified set");
assertTrue(storedTrackback.getLastModified().getTime() >= testStart, "last modified date wasn't after test start");
}
@Test(expectedExceptions = {DataIntegrityViolationException.class})
public void testSaveWithNullArticleID() {
Trackback trackback = new Trackback(null, "url");
trackback.setTitle("title");
trackback.setBlogName("blog name");
trackback.setExcerpt("excerpt");
hibernateTemplate.save(trackback);
}
@Test(expectedExceptions = {DataIntegrityViolationException.class})
public void testUniqueArticleUrlKey() {
Trackback trackback = new Trackback(1111111l, "http://www.imdb.com/title/tt1405406/");
trackback.setTitle("title");
trackback.setBlogName("blog name");
trackback.setExcerpt("excerpt");
try {
hibernateTemplate.save(trackback);
} catch (DataAccessException e) {
fail("Exception while saving first trackback");
}
hibernateTemplate.save(trackback);
}
}