def test_selector_datastream(self):
     should_be = """
                 <foxml:datastream ID="selector" FEDORA_URI="info:fedora/1/selector" STATE="A" CONTROL_GROUP="M">
                   <foxml:datastreamVersion ID="selector.0" LABEL="Selector data for OAC annotation" MIMETYPE="application/rdf+xml">
                     <foxml:xmlContent>
                       <rdf:RDF>
                         <rdf:Description rdf:about="info:fedora/{{ANNO1_PID}}/selector">
                           <rdf:type rdf:resource="oa:FragmentSelector"/>
                           <rdf:value>/my/xpath/</rdf:value>
                         </rdf:Description>
                       </rdf:RDF>
                     </foxml:xmlContent>
                   </foxml:datastreamVersion>
                 </foxml:datastream>
                 """
     ele = Foxml.get_selector_rdf_element(
         pid="1", oa_selector="/my/xpath/", oa_selector_type_uri="oa:FragmentSelector"
     )
     ds = Foxml.get_xml_datastream(
         element=ele,
         id="selector",
         mime="application/rdf+xml",
         label="Selector data for OAC annotation",
         fedora_uri="info:fedora/1/selector",
     )
    def test_specific_target_datastream(self):
        should_be = """
                    <foxml:datastream ID="specifictarget" FEDORA_URI="info:fedora/1/specifictarget" STATE="A" CONTROL_GROUP="M">
                      <foxml:datastreamVersion ID="specifictarget.0" LABEL="SpecificTarget data for OAC annotation" MIMETYPE="application/rdf+xml">
                        <foxml:xmlContent>
                          <rdf:RDF>
                            <rdf:Description rdf:about="info:fedora/1/SpecificTarget">
                              <rdf:type rdf:resource="oa:SpecificResource"/>
                              <oa:hasSource rdf:resource="source:2"/>
                              <oax:hasStyle rdf:resource="style:3"/>
                              <oa:hasSelector rdf:resource="info:fedora/1/selector"/>
                            </rdf:Description>
                          </rdf:RDF>
                        </foxml:xmlContent>
                      </foxml:datastreamVersion>
                    </foxml:datastream>
                    """

        ele = Foxml.get_specific_target_rdf_element(pid="1", source_uri="source:2", oax_style_uri="style:3")
        ds = Foxml.get_xml_datastream(
            element=ele,
            id="specifictarget",
            mime="application/rdf+xml",
            label="SpecificTarget data for OAC annotation",
            fedora_uri="info:fedora/1/specifictarget",
        )
 def test_annotation_datastream(self):
     should_be = """
                 <foxml:datastream ID="annotation" FEDORA_URI="info:fedora/1/annotation" STATE="A" CONTROL_GROUP="M">
                   <foxml:datastreamVersion ID="annotation.0" LABEL="" MIMETYPE="text/xml">
                     <foxml:xmlContent>
                       <rdf:RDF>
                         <rdf:Description rdf:about="info:fedora/1">
                           <rdf:type rdf:resource="oa:Annotation"/>
                           <oa:hasBody rdf:resource="body:1"/>
                           <oa:hasTarget rdf:resource="info:fedora/1/SpecificTarget"/>
                           <oa:modelVersion rdf:resource="http://www.openannotation.org/spec/core/20120509.html"/>
                           <oa:generated>{{datetime}}</oa:generated>
                           <oa:annotator>Mac</oa:annotator>
                           <oa:generator>Web</oa:generator>
                           <oa:annotated>{{datetime}}</oa:annotated>
                         </rdf:Description>
                         <rdf:Description rdf:about="1">
                           <rdf:type rdf:resource="oa:Body"/>
                           <dc:format>text/xml</dc:format>
                         </rdf:Description>
                       </rdf:RDF>
                     </foxml:xmlContent>
                   </foxml:datastreamVersion>
                 </foxml:datastream>
                 """
     ele = Foxml.get_annotation_rdf_element(
         pid="1",
         body_uri="body:1",
         oa_selector="/my/xpath",
         body_mimetype="text/xml",
         annotator="Mac",
         generator="Web",
     )
     ds = Foxml.get_xml_datastream(
         element=ele,
         id="annotation",
         mime="application/rdf+xml",
         label="OAC annotation core",
         fedora_uri="info:fedora/1/annotation",
     )
 def test_dublin_core_datastream(self):
     should_be = """
                 <foxml:datastream ID="DC" FEDORA_URI="info:fedora/1/DC" STATE="A" CONTROL_GROUP="M">
                   <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/">
                     <foxml:xmlContent>
                       <oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
                         <dc:identifier>1</dc:identifier>
                         <dc:title>super!</dc:title>
                       </oai_dc:dc>
                     </foxml:xmlContent>
                   </foxml:datastreamVersion>
                 </foxml:datastream>
                 """
     ele = Foxml.get_dublin_core_element(pid="1", title="super!")
     ds = Foxml.get_xml_datastream(
         element=ele,
         id="DC",
         version_id="DC1",
         mime="text/xml",
         label="Dublin Core Record for this object",
         fedora_uri="info:fedora/1/DC",
         format_uri="http://www.openarchives.org/OAI/2.0/oai_dc/",
     )
    def test_rels_ext_model_datastream(cls, **kwargs):
        should_be = """
                    <foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
                        <foxml:datastreamVersion ID="RELS-EXT.0" LABEL="RDF Statements about this object" MIMETYPE="application/rdf+xml" FORMAT_URI="info:fedora/fedora-system:FedoraRELSExt-1.0">
                            <foxml:xmlContent>
                                <rdf:RDF>
                                    <rdf:Description rdf:about="info:fedora/1">
                                        <fedora-model:hasModel rdf:resource="info:fedora/bdr-cmodel:tei-annotation"/>
                                    </rdf:Description>
                                </rdf:RDF>
                            </foxml:xmlContent>
                        </foxml:datastreamVersion>
                    </foxml:datastream>
                    """
        ele = Foxml.get_rels_ext_model_element(pid="1", models=["tei-annotation"])

        ds = Foxml.get_xml_datastream(
            element=ele,
            id="RELS-EXT",
            mime="application/rdf+xml",
            label="RDF Statements about this object",
            format_uri="info:fedora/fedora-system:FedoraRELSExt-1.0",
        )
 def test_xml_body_content_datastream(self):
     body_string = "<TEI><body>Some TEI text goes here.</body></TEI>"
     body = Foxml.get_xml_datastream(element=body_string, id="OAC_BODY", label="OAC Body Content", mime="text/xml")