/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse.util.json;
import edu.harvard.iq.dataverse.api.dto.DatasetVersionDTO;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import edu.harvard.iq.dataverse.api.Util;
import edu.harvard.iq.dataverse.api.dto.FieldDTO;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import junit.framework.Assert;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author ellenk
*/
public class DatasetVersionDTOTest {
private final DateFormat dateFormat = Util.getDateTimeFormat();
public DatasetVersionDTOTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void testReadDataSet() {
try {
File file = new File("src/test/java/edu/harvard/iq/dataverse/util/json/JsonDatasetVersion.txt");
String text = new Scanner(file).useDelimiter("\\Z").next();
Gson gson = new Gson();
DatasetVersionDTO dto = gson.fromJson(text, DatasetVersionDTO.class);
HashSet<FieldDTO> author1Fields = new HashSet<>();
author1Fields.add(FieldDTO.createPrimitiveFieldDTO("authorAffiliation", "Top"));
author1Fields.add(FieldDTO.createPrimitiveFieldDTO("authorIdentifier", "ellenid"));
author1Fields.add(FieldDTO.createVocabFieldDTO("authorIdentifierScheme", "ORCID"));
author1Fields.add(FieldDTO.createPrimitiveFieldDTO("authorName", "Privileged, Pete"));
HashSet<FieldDTO> author2Fields = new HashSet<>();
author2Fields.add(FieldDTO.createPrimitiveFieldDTO("authorAffiliation", "Bottom"));
author2Fields.add(FieldDTO.createPrimitiveFieldDTO("authorIdentifier", "audreyId"));
author2Fields.add(FieldDTO.createVocabFieldDTO("authorIdentifierScheme", "DAISY"));
author2Fields.add(FieldDTO.createPrimitiveFieldDTO("authorName", "Awesome, Audrey"));
List<HashSet<FieldDTO>> authorList = new ArrayList<>();
authorList.add(author1Fields);
authorList.add(author2Fields);
FieldDTO expectedDTO = new FieldDTO();
expectedDTO.setTypeName("author");
expectedDTO.setMultipleCompound(authorList);
FieldDTO authorDTO = dto.getMetadataBlocks().get("citation").getFields().get(1);
// write both dto's to json to compare them with gson parser
JsonElement expected = gson.toJsonTree(expectedDTO, FieldDTO.class);
JsonElement result = gson.toJsonTree(authorDTO);
Assert.assertEquals(expected, result);
} catch (IOException e) {
e.printStackTrace();
}
}
}