/* * EuroCarbDB, a framework for carbohydrate bioinformatics * * Copyright (c) 2006-2009, Eurocarb project, or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * A copy of this license accompanies this distribution in the file LICENSE.txt. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * Last commit: $Rev: 1549 $ by $Author: glycoslave $ on $Date:: 2009-07-19 #$ */ /** * $Id: TestCreateReferences.java 1549 2009-07-19 02:40:46Z glycoslave $ * Last changed $Author: glycoslave $ * EUROCarbDB Project */ package test.eurocarbdb.action.core; import java.util.HashMap; import java.util.Map; import org.eurocarbdb.action.EurocarbAction; import org.eurocarbdb.action.core.CreateReferences; import org.eurocarbdb.dataaccess.core.*; import org.testng.annotations.*; import test.eurocarbdb.action.BaseActionTestSuite; import com.opensymphony.xwork.ActionProxy; import org.apache.log4j.Logger; /** * Simple suite for testing the CreateReferences action * * @author hirenj * @version $Rev: 1549 $ */ @Test( groups = { "ecdb.action.core.CreateReferences" } ) public class TestCreateReferences extends BaseActionTestSuite { /** Logging handle. */ static final Logger log = Logger.getLogger( TestCreateReferences.class ); @BeforeSuite public void initialise() throws Exception { actionFactory.createActionProxy("", "create_references", null); } public void createReferencesTestPubmedAddition() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.pubmedId", "12345"); ActionProxy action = getAction("create_references",params); String result = action.execute(); CreateReferences createRefs = (CreateReferences) action.getAction(); assert EurocarbAction.SUCCESS.equals(result) : "Expected result "+EurocarbAction.INPUT+" but got "+result; assert (1 == createRefs.getReferences().size()) : "Expected 1 result reference from pubmed retrieve but got "+createRefs.getReferences().size(); assert 12345 == ((JournalReference) createRefs.getReferences().get(0)).getPubmedId() : "Expected to retrieve pubmed with id of 12345, but got "+((JournalReference) createRefs.getReferences().get(0)).getPubmedId(); assert ("Rubinstein MH").equals(((JournalReference) createRefs.getReferences().get(0)).getAuthors()) : "Expected to retrieve article by Rubinstein MH but got "+((JournalReference) createRefs.getReferences().get(0)).getAuthors(); } public void createReferencesTestBadPubmedAddition() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.pubmedId", "99999999"); ActionProxy action = getAction("create_references",params); String result = action.execute(); CreateReferences createRefs = (CreateReferences) action.getAction(); assert EurocarbAction.SUCCESS.equals(result) : "Expected result "+EurocarbAction.INPUT+" but got "+result; assert (0 == createRefs.getReferences().size()) : "Expected 0 result reference from pubmed retrieve but got "+createRefs.getReferences().size(); } public void createReferencesTestPubmedAlreadyDownloaded() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.pubmedId", "7737180"); ActionProxy action = getAction("create_references",params); String result = action.execute(); CreateReferences createRefs = (CreateReferences) action.getAction(); assert EurocarbAction.SUCCESS.equals(result) : "Expected result "+EurocarbAction.INPUT+" but got "+result; assert (1 == createRefs.getReferences().size()) : "Expected 0 result reference from pubmed retrieve but got "+createRefs.getReferences().size(); assert 7737180 == ((JournalReference) createRefs.getReferences().get(0)).getPubmedId() : "Expected to retrieve pubmed with id of 7737180, but got "+((JournalReference) createRefs.getReferences().get(0)).getPubmedId(); assert ("Lochnit G; Geyer R").equals(((JournalReference) createRefs.getReferences().get(0)).getAuthors()) : "Expected to retrieve article by Rubinstein MH but got "+((JournalReference) createRefs.getReferences().get(0)).getAuthors(); assert 0 != createRefs.getReferences().get(0).getReferenceId() : "Expected a non-zero reference ID for an existing entry, but got 0"; } public void createReferencesTestAddingToExistingList() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.pubmedId", "7737180"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); assert 4 == createRefs.getReferences().size() : "Expected 4 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestAddDuplicateReference() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.pubmedId", "12520065"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); log.debug("Errors are"); for (Object error: createRefs.getActionErrors()) { log.debug((String) error); } log.debug(createRefs.getFieldErrors().size()); assert "success".equals(result) : "Expected success for result, instead got "+result; assert 3 == createRefs.getReferences().size() : "Expected 3 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestAddJournalReference() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.authors", "Hiren"); params.put("journalReference.journal.journalTitle", "Hirens journal of articles"); params.put("journalReference.journal.journalAbbrev", "H.J.A"); params.put("journalReference.title","Hiren's big adventure with unit testing"); params.put("journalReference.publicationYear","2009"); params.put("journalReference.journalVolume","12"); params.put("journalReference.firstPage","1"); params.put("journalReference.lastPage","2"); params.put("journalReference.referenceType","journal"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); assert 0 == createRefs.getReferences().size(); String result = action.execute(); assert "success".equals(result) : "Expected success result, instead got "+result; assert 1 == createRefs.getReferences().size() : "Expected 1 reference in the list, instead got "+createRefs.getReferences().size(); assert "Hiren".equals(((JournalReference) createRefs.getReferences().get(0)).getAuthors()) : "Expected Authors to be 'Hiren' but, instead got "+((JournalReference) createRefs.getReferences().get(0)).getAuthors(); } public void createReferencesTestAddJournalReferenceWithMissingFields() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.authors", "Hiren"); params.put("journalReference.referenceType","journal"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); assert 0 == createRefs.getReferences().size(); String result = action.execute(); assert "input".equals(result) : "Expected input result, instead got "+result; assert 0 == createRefs.getReferences().size() : "Expected 0 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestAddReferenceToListOfJournals() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("journalReference.authors", "Hiren"); params.put("journalReference.journal.journalTitle", "Hirens journal of articles"); params.put("journalReference.title","Hiren's big adventure with unit testing"); params.put("journalReference.journal.journalAbbrev", "H.J.A"); params.put("journalReference.publicationYear","2009"); params.put("journalReference.journalVolume","12"); params.put("journalReference.firstPage","1"); params.put("journalReference.lastPage","2"); params.put("journalReference.referenceType","journal"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); assert "success".equals(result) : "Expected success result, instead got "+result; assert 4 == createRefs.getReferences().size() : "Expected 4 references in the list, instead got "+createRefs.getReferences().size(); assert "Hiren".equals(((JournalReference) createRefs.getReferences().get(3)).getAuthors()) : "Expected Authors to be 'Hiren' but, instead got "+((JournalReference) createRefs.getReferences().get(3)).getAuthors(); } public void createReferencesTestDoNothing() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); String result = action.execute(); assert 0 == createRefs.getReferences().size() : "Expected 0 references in the list, instead got "+createRefs.getReferences().size(); assert "input".equals(result) : "Expected result of input but got "+result; } public void createReferencesTestDoNothingWhenThereIsAnExistingSession() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); assert 3 == createRefs.getReferences().size() : "Expected 3 references in the list, instead got "+createRefs.getReferences().size(); assert "input".equals(result) : "Expected result of input but got "+result; } public void createReferencesTestCreateWebsiteReference() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("reference.url", "http://eurocarbdb.org"); params.put("reference.referenceType","website"); params.put("reference.externalReferenceId","999"); params.put("reference.externalReferenceName","CarbBank"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); log.debug("Errors are"); for (Object error: createRefs.getActionErrors()) { log.debug((String) error); } assert "success".equals(result) : "Expected success result, instead got "+result; assert 4 == createRefs.getReferences().size() : "Expected 4 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestCreateDatabaseReference() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("reference.url", "http://eurocarbdb.org"); params.put("reference.externalReferenceId", "12"); params.put("reference.referenceType","database"); params.put("reference.externalReferenceName", "eurocarbdb"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); log.debug("Errors are"); for (Object error: createRefs.getActionErrors()) { log.debug((String) error); } assert "success".equals(result) : "Expected success result, instead got "+result; assert 4 == createRefs.getReferences().size() : "Expected 4 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestIncompleteCreateDatabaseReference() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("reference.url", "http://eurocarbdb.org"); params.put("reference.referenceType","database"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); createRefs.getReferences().add(JournalReference.createFromPubmedId(12520065)); createRefs.getReferences().add(JournalReference.createFromPubmedId(17202164)); createRefs.getReferences().add(JournalReference.createFromPubmedId(15174134)); assert 3 == createRefs.getReferences().size(); String result = action.execute(); log.debug("Errors are"); for (Object error: createRefs.getActionErrors()) { log.debug((String) error); } assert "input".equals(result) : "Expected input result, instead got "+result; assert 3 == createRefs.getReferences().size() : "Expected 4 references in the list, instead got "+createRefs.getReferences().size(); } public void createReferencesTestConflictingParameterResolution() throws Exception { Map<String,Object> params = new HashMap<String,Object>(); params.put("reference.url", "http://eurocarbdb.org"); params.put("journalReference.pubmedId", "12520065"); ActionProxy action = getAction("create_references",params); CreateReferences createRefs = (CreateReferences) action.getAction(); assert 0 == createRefs.getReferences().size(); String result = action.execute(); log.debug("Errors are"); for (Object error: createRefs.getActionErrors()) { log.debug((String) error); } assert "input".equals(result) : "Expected input result, instead got "+result; assert 0 == createRefs.getReferences().size() : "Expected 1 references in the list, instead got "+createRefs.getReferences().size(); } }