/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/test/org/sakaiproject/assessment/facade/test/AssessmentGradingFacadeQueriesTest.java $
* $Id: AssessmentGradingFacadeQueriesTest.java 132168 2013-12-03 20:25:29Z ktsao@stanford.edu $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation
*
* Licensed under the Educational Community 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.opensource.org/licenses/ECL-2.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 org.sakaiproject.assessment.facade.test;
import java.util.List;
import org.hibernate.SessionFactory;
import org.sakaiproject.tool.assessment.data.dao.grading.AssessmentGradingData;
import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData;
import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException;
import org.sakaiproject.tool.assessment.facade.AssessmentGradingFacadeQueries;
import org.sakaiproject.tool.assessment.services.PersistenceHelper;
import org.springframework.test.AbstractTransactionalSpringContextTests;
public class AssessmentGradingFacadeQueriesTest extends AbstractTransactionalSpringContextTests {
protected String[] getConfigLocations() {
return new String[] {"/spring-hibernate.xml"};
}
/** our query object */
AssessmentGradingFacadeQueries queries = null;
Long savedId = null;
protected void onSetUpInTransaction() throws Exception {
queries = new AssessmentGradingFacadeQueries();
queries.setSessionFactory((SessionFactory)applicationContext.getBean("sessionFactory"));
//Set the persistance helper
PersistenceHelper persistenceHelper = new PersistenceHelper();
persistenceHelper.setDeadlockInterval(3500);
persistenceHelper.setRetryCount(5);
queries.setPersistenceHelper(persistenceHelper);
}
public void testSaveAssesmentGradingData() {
//A AssemementGradingData to work with
AssessmentGradingData dataBad = new AssessmentGradingData();
//we expect a failure on this one
/*FIXME this test should fail with an exception
* currently the exceptions are quietly swallowed */
try {
queries.saveOrUpdateAssessmentGrading(dataBad);
//fail();
}
catch (Exception e) {
//we expect this
//e.printStackTrace();
}
AssessmentGradingData data = new AssessmentGradingData();
data.setPublishedAssessmentId(Long.valueOf(1));
data.setAgentId("agent");
data.setIsLate(false);
data.setForGrade(false);
data.setStatus(Integer.valueOf(0));
try {
queries.saveOrUpdateAssessmentGrading(data);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
assertNotNull(data.getAssessmentGradingId());
//test saving an answer as part of the question.
ItemGradingData item1 = new ItemGradingData();
item1.setAgentId(data.getAgentId());
item1.setAssessmentGradingId(data.getAssessmentGradingId());
item1.setPublishedItemId(1L);
item1.setPublishedItemTextId(1L);
//saving the item should add an ID
try {
queries.saveItemGrading(item1);
} catch (SamigoDataAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
fail();
}
assertNotNull(item1.getItemGradingId());
ItemGradingData item2 = new ItemGradingData();
item2.setAgentId(data.getAgentId());
item2.setAssessmentGradingId(data.getAssessmentGradingId());
item2.setPublishedItemId(1L);
item2.setPublishedItemTextId(1L);
data.getItemGradingSet().add(item2);
/** saving the parent should save the children **/
try {
queries.saveOrUpdateAssessmentGrading(data);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
assertNotNull(item1.getItemGradingId());
}
public void testLoad() {
loadData();
AssessmentGradingData result = queries.load(savedId);
assertNotNull(result);
assertEquals(result.getItemGradingSet().size(), 2);
List<AssessmentGradingData> subs = queries.getAllSubmissions("1");
assertNotNull(subs);
assertEquals(2, subs.size());
}
/**
* Load some test data
*/
private void loadData() {
//set up some data
AssessmentGradingData data = new AssessmentGradingData();
data.setPublishedAssessmentId(Long.valueOf(1));
data.setAgentId("agent");
data.setIsLate(false);
data.setForGrade(false);
data.setStatus(Integer.valueOf(0));
try {
queries.saveOrUpdateAssessmentGrading(data);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
AssessmentGradingData data2 = new AssessmentGradingData();
data2.setPublishedAssessmentId(Long.valueOf(1));
data2.setAgentId("agent2");
data2.setIsLate(false);
data2.setForGrade(true);
data2.setStatus(0);
try {
queries.saveOrUpdateAssessmentGrading(data2);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
AssessmentGradingData data3 = new AssessmentGradingData();
data3.setPublishedAssessmentId(Long.valueOf(1));
data3.setAgentId("agent3");
data3.setIsLate(false);
data3.setForGrade(true);
data3.setStatus(0);
try {
queries.saveOrUpdateAssessmentGrading(data3);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
ItemGradingData item1 = new ItemGradingData();
item1.setAgentId(data.getAgentId());
item1.setAssessmentGradingId(data.getAssessmentGradingId());
item1.setPublishedItemId(1L);
item1.setPublishedItemTextId(1L);
ItemGradingData item2 = new ItemGradingData();
item2.setAgentId(data.getAgentId());
item2.setAssessmentGradingId(data.getAssessmentGradingId());
item2.setPublishedItemId(2L);
item2.setPublishedItemTextId(2L);
data.getItemGradingSet().add(item2);
data.getItemGradingSet().add(item1);
try {
queries.saveOrUpdateAssessmentGrading(data);
} catch (SamigoDataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail();
}
savedId = data.getAssessmentGradingId();
}
}