-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #31 from unt-libraries/test-xml
Revamp Test XML
- Loading branch information
Showing
6 changed files
with
264 additions
and
230 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +0,0 @@ | ||
from functools import partial | ||
import os | ||
|
||
|
||
TESTS_DIR = os.path.dirname(os.path.abspath(__file__)) | ||
|
||
TEST_DATA_DIR = os.path.join(TESTS_DIR, 'test_data') | ||
|
||
AppEventTestXml = partial(open, os.path.join(TEST_DATA_DIR, 'app_event.xml')) | ||
|
||
EventTestXml = partial(open, os.path.join(TEST_DATA_DIR, 'event.xml')) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
import pytest | ||
|
||
from . import factories | ||
|
||
|
||
class EventTestXML(object): | ||
|
||
def __init__(self): | ||
self.attributes = factories.EventFactory.attributes() | ||
self.identifier = self.attributes['event_identifier'] | ||
self._link_object_attributes = factories.LinkObjectFactory.attributes() | ||
|
||
@property | ||
def entry_xml(self): | ||
xml = """<?xml version="1.0"?> | ||
<entry xmlns="http://www.w3.org/2005/Atom"> | ||
<title>{event_identifier}</title> | ||
<id>http://example.com/APP/event/{event_identifier}/</id> | ||
<updated>2015-10-02T19:59:22Z</updated> | ||
<content type="application/xml"> | ||
<premis:event xmlns:premis="info:lc/xmlns/premis-v2"> | ||
<premis:eventDetail>{event_detail}</premis:eventDetail> | ||
<premis:eventOutcomeInformation> | ||
<premis:eventOutcomeDetail>{event_outcome_detail}</premis:eventOutcomeDetail> | ||
<premis:eventOutcome>{event_outcome}</premis:eventOutcome> | ||
</premis:eventOutcomeInformation> | ||
<premis:eventType>{event_type}</premis:eventType> | ||
<premis:linkingAgentIdentifier> | ||
<premis:linkingAgentIdentifierValue>{linking_agent_identifier_value}</premis:linkingAgentIdentifierValue> | ||
<premis:linkingAgentIdentifierType>{linking_agent_identifier_type}</premis:linkingAgentIdentifierType> | ||
</premis:linkingAgentIdentifier> | ||
<premis:eventIdentifier> | ||
<premis:eventIdentifierValue>{event_identifier}</premis:eventIdentifierValue> | ||
<premis:eventIdentifierType>{event_identifier_type}</premis:eventIdentifierType> | ||
</premis:eventIdentifier> | ||
<premis:eventDateTime>{event_date_time}</premis:eventDateTime> | ||
{linking_objects} | ||
</premis:event> | ||
</content> | ||
</entry> | ||
""" | ||
return xml.format( | ||
linking_objects=self._linking_objects_xml(), | ||
**self.attributes) | ||
|
||
@property | ||
def obj_xml(self): | ||
xml = """<?xml version="1.0"?> | ||
<premis:event xmlns:premis="info:lc/xmlns/premis-v2"> | ||
<premis:eventDetail>{event_detail}</premis:eventDetail> | ||
<premis:eventOutcomeInformation> | ||
<premis:eventOutcomeDetail>{event_outcome_detail}</premis:eventOutcomeDetail> | ||
<premis:eventOutcome>{event_outcome}</premis:eventOutcome> | ||
</premis:eventOutcomeInformation> | ||
<premis:eventType>{event_type}</premis:eventType> | ||
<premis:linkingAgentIdentifier> | ||
<premis:linkingAgentIdentifierValue>{linking_agent_identifier_value}</premis:linkingAgentIdentifierValue> | ||
<premis:linkingAgentIdentifierType>{linking_agent_identifier_type}</premis:linkingAgentIdentifierType> | ||
</premis:linkingAgentIdentifier> | ||
<premis:eventIdentifier> | ||
<premis:eventIdentifierValue>{event_identifier}</premis:eventIdentifierValue> | ||
<premis:eventIdentifierType>{event_identifier_type}</premis:eventIdentifierType> | ||
</premis:eventIdentifier> | ||
<premis:eventDateTime>{event_date_time}</premis:eventDateTime> | ||
{linking_objects} | ||
</premis:event> | ||
""" | ||
return xml.format( | ||
linking_objects=self._linking_objects_xml(), | ||
**self.attributes) | ||
|
||
def _linking_objects_xml(self): | ||
template = """<premis:linkingObjectIdentifier> | ||
<premis:linkingObjectIdentifierType>{object_type}</premis:linkingObjectIdentifierType> | ||
<premis:linkingObjectIdentifierValue>{object_identifier}</premis:linkingObjectIdentifierValue> | ||
<premis:linkingObjectRole>{object_role}</premis:linkingObjectRole> | ||
</premis:linkingObjectIdentifier> | ||
""" | ||
return template.format(**self._link_object_attributes) | ||
|
||
|
||
class AgentTestXML(object): | ||
|
||
def __init__(self): | ||
self.attributes = factories.AgentFactory.attributes() | ||
self.identifier = self.attributes['agent_identifier'] | ||
|
||
@property | ||
def obj_xml(self): | ||
xml = """<?xml version="1.0"?> | ||
<premis:agent xmlns:premis="info:lc/xmlns/premis-v2"> | ||
<premis:agentIdentifier> | ||
<premis:agentIdentifierValue>{agent_identifier}</premis:agentIdentifierValue> | ||
<premis:agentIdentifierType>PES:Agent</premis:agentIdentifierType> | ||
</premis:agentIdentifier> | ||
<premis:agentName>{agent_name}</premis:agentName> | ||
<premis:agentType>{agent_type}</premis:agentType> | ||
<premis:agentNote>{agent_note}</premis:agentNote> | ||
</premis:agent> | ||
""" | ||
return xml.format(**self.attributes) | ||
|
||
|
||
@pytest.fixture | ||
def event_xml(): | ||
"""Provides XML representing an Event object. | ||
The XML is created using factories.EventFactory. Every instantiation | ||
provides random data using the EventFactory.attributes() method. | ||
The object provides three public properties. | ||
identifer: The identifier of the Event object the XML represents. | ||
obj_xml: The object xml. | ||
entry_xml: The object xml wrapped in an AtomPub entry. | ||
""" | ||
return EventTestXML() | ||
|
||
|
||
@pytest.fixture | ||
def agent_xml(): | ||
"""Provides XML representing an Agent object. | ||
The XML is created using factories.AgentFactory. Every instantiation | ||
provides random data using the AgentFactory.attributes() method. | ||
The object provides two public properties. | ||
identifer: The identifier of the Agent object the XML represents. | ||
obj_xml: The object xml. | ||
""" | ||
return AgentTestXML() |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.