83 lines
1.8 KiB
Python
83 lines
1.8 KiB
Python
"""
|
|
Tools for creating edxnotes content fixture data.
|
|
"""
|
|
|
|
|
|
import json
|
|
|
|
import factory
|
|
import requests
|
|
|
|
from common.test.acceptance.fixtures import EDXNOTES_STUB_URL
|
|
|
|
|
|
class Range(factory.Factory):
|
|
class Meta(object):
|
|
model = dict
|
|
|
|
start = "/div[1]/p[1]"
|
|
end = "/div[1]/p[1]"
|
|
startOffset = 0
|
|
endOffset = 8
|
|
|
|
|
|
class Note(factory.Factory):
|
|
class Meta(object):
|
|
model = dict
|
|
|
|
user = "dummy-user"
|
|
usage_id = "dummy-usage-id"
|
|
course_id = "dummy-course-id"
|
|
text = "dummy note text"
|
|
quote = "dummy note quote"
|
|
ranges = [Range()]
|
|
|
|
|
|
class EdxNotesFixtureError(Exception):
|
|
"""
|
|
Error occurred while installing a edxnote fixture.
|
|
"""
|
|
pass
|
|
|
|
|
|
class EdxNotesFixture(object):
|
|
notes = []
|
|
|
|
def create_notes(self, notes_list):
|
|
self.notes = notes_list
|
|
return self
|
|
|
|
def install(self):
|
|
"""
|
|
Push the data to the stub EdxNotes service.
|
|
"""
|
|
response = requests.post(
|
|
'{}/create_notes'.format(EDXNOTES_STUB_URL),
|
|
data=json.dumps(self.notes)
|
|
)
|
|
|
|
if not response.ok:
|
|
raise EdxNotesFixtureError(
|
|
u"Could not create notes {0}. Status was {1}".format(
|
|
json.dumps(self.notes), response.status_code
|
|
)
|
|
)
|
|
|
|
return self
|
|
|
|
def cleanup(self):
|
|
"""
|
|
Cleanup the stub EdxNotes service.
|
|
"""
|
|
self.notes = []
|
|
response = requests.put('{}/cleanup'.format(EDXNOTES_STUB_URL))
|
|
|
|
if not response.ok:
|
|
raise EdxNotesFixtureError(
|
|
u"Could not cleanup EdxNotes service {0}. Status was {1}".format(
|
|
json.dumps(self.notes), response.status_code
|
|
)
|
|
)
|
|
|
|
return self
|