# frozen_string_literal: true
require 'spec_helper'
describe Briard::Metadata, vcr: true do
context "write metadata as cff" do
it "SoftwareSourceCode Zenodo" do
input = "https://doi.org/10.5281/zenodo.10164"
subject = Briard::Metadata.new(input: input, from: "datacite")
expect(subject.valid?).to be true
json = Psych.safe_load(subject.cff, permitted_classes: [Date])
expect(json["doi"]).to eq("https://doi.org/10.5281/zenodo.10164")
expect(json["authors"]).to eq([{"affiliation"=>"Juelich Supercomputing Centre, Jülich, Germany",
"family-names"=>"Klatt",
"given-names"=>"Torbjörn"},
{"affiliation"=>"Juelich Supercomputing Centre, Jülich, Germany",
"family-names"=>"Moser",
"given-names"=>"Dieter"},
{"affiliation"=>"Juelich Supercomputing Centre, Jülich, Germany",
"family-names"=>"Speck",
"given-names"=>"Robert"}])
expect(json["title"]).to eq("Pypint -- Python Framework For Parallel-In-Time Methods")
expect(json["abstract"]).to eq("PyPinT is a framework for Parallel-in-Time integration routines. The main purpose of PyPinT is to provide a framework for educational use and prototyping new parallel-in-time algorithms. As well it will aid in developing a high-performance C++ implementation for massively parallel computers providing the benefits of parallel-in-time routines to a zoo of time integrators in various applications.")
expect(json["date-released"]).to eq("2014-05-27")
expect(json["repository-code"]).to eq("https://zenodo.org/record/10164")
expect(json["keywords"]).to eq(["parallel-in-time integration", "spectral deferred corrections", "multigrid", "multi-level spectral deferred corrections", "python framework"])
expect(json["license"]).to be_nil
expect(json["references"]).to eq("identifiers"=>[{"type"=>"url", "value"=>"https://github.com/Parallel-in-Time/PyPinT/tree/release-v0.0.4"}])
end
it "SoftwareSourceCode also Zenodo" do
input = "https://doi.org/10.5281/zenodo.15497"
subject = Briard::Metadata.new(input: input, from: "datacite")
expect(subject.valid?).to be true
json = Psych.safe_load(subject.cff, permitted_classes: [Date])
expect(json["doi"]).to eq("https://doi.org/10.5281/zenodo.15497")
expect(json["authors"]).to eq([{"affiliation"=>
"Instituut voor Kern- en Stralingsfysica, KU Leuven, 3001 Leuven, België",
"family-names"=>"Gins",
"given-names"=>"Wouter"},
{"affiliation"=>
"Instituut voor Kern- en Stralingsfysica, KU Leuven, 3001 Leuven, België",
"family-names"=>"de Groote",
"given-names"=>"Ruben"},
{"affiliation"=>
"Instituut voor Kern- en Stralingsfysica, KU Leuven, 3001 Leuven, België",
"family-names"=>"Heylen",
"given-names"=>"Hanne"}])
expect(json["title"]).to eq("Satlas: Simulation And Analysis Toolbox For Laser Spectroscopy And Nmr Experiments")
expect(json["abstract"]).to eq("Initial release of the satlas Python package for the analysis and simulation for laser spectroscopy experiments. For the documentation, see http://woutergins.github.io/satlas/")
expect(json["date-released"]).to eq("2015-02-18")
expect(json["repository-code"]).to eq("https://zenodo.org/record/15497")
expect(json["keywords"]).to be_nil
expect(json["license"]).to be_nil
expect(json["references"]).to eq("identifiers"=>[{"type"=>"url", "value"=>"https://github.com/woutergins/satlas/tree/v1.0.0"}])
end
it "ruby-cff" do
input = "https://github.com/citation-file-format/ruby-cff"
subject = Briard::Metadata.new(input: input)
expect(subject.valid?).to be true
json = Psych.safe_load(subject.cff, permitted_classes: [Date])
expect(json["doi"]).to eq("https://doi.org/10.5281/zenodo.1184077")
expect(json["authors"]).to eq([{"affiliation"=>"The University of Manchester, UK",
"family-names"=>"Haines",
"given-names"=>"Robert",
"orcid"=>"https://orcid.org/0000-0002-9538-7919"},
{"name"=>"The Ruby Citation File Format Developers"}])
expect(json["title"]).to eq("Ruby CFF Library")
expect(json["abstract"]).to eq("This library provides a Ruby interface to manipulate Citation File Format files")
expect(json["date-released"]).to eq("2021-08-18")
expect(json["repository-code"]).to eq("https://github.com/citation-file-format/ruby-cff")
expect(json["keywords"]).to eq(["ruby", "credit", "software citation", "research software", "software sustainability", "metadata", "citation file format", "cff"])
expect(json["license"]).to eq("apache-2.0")
expect(json["references"]).to eq("identifiers"=>[{"type"=>"doi", "value"=>"10.5281/zenodo.1003149"}])
end
it "Collection of Jupyter notebooks" do
input = "https://doi.org/10.14454/fqq6-w751"
subject = Briard::Metadata.new(input: input, from: "datacite")
expect(subject.valid?).to be true
json = Psych.safe_load(subject.cff, permitted_classes: [Date])
expect(json["doi"]).to eq("https://doi.org/10.14454/fqq6-w751")
expect(json["authors"]).to eq([{"family-names"=>"Petryszak",
"given-names"=>"Robert",
"orcid"=>"https://orcid.org/0000-0001-6333-2182"},
{"affiliation"=>"DataCite",
"family-names"=>"Fenner",
"given-names"=>"Martin",
"orcid"=>"https://orcid.org/0000-0003-1419-2405"},
{"affiliation"=>"Science and Technology Facilities Council",
"family-names"=>"Lambert",
"given-names"=>"Simon",
"orcid"=>"https://orcid.org/0000-0001-9570-8121"},
{"affiliation"=>"European Bioinformatics Institute",
"family-names"=>"Llinares",
"given-names"=>"Manuel Bernal",
"orcid"=>"https://orcid.org/0000-0002-7368-180X"},
{"affiliation"=>"British Library",
"family-names"=>"Madden",
"given-names"=>"Frances",
"orcid"=>"https://orcid.org/0000-0002-5432-6116"}])
expect(json["title"]).to eq("FREYA PID Graph Jupyter Notebooks")
expect(json["abstract"]).to eq("Jupyter notebooks that use GraphQL to implement EC-funded FREYA Project PID Graph user stories.")
expect(json["date-released"]).to eq("2020-05-08")
expect(json["repository-code"]).to eq("https://github.com/datacite/pidgraph-notebooks-python")
expect(json["keywords"]).to eq(["pid graph", "pid", "graphql", "freya", "jupyter", "FOS: Computer and information sciences"])
expect(json["license"]).to be_nil
expect(json["references"]).to be_nil
end
end
end