diff --git a/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-with-markdown.html b/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-with-markdown.html
new file mode 100644
index 0000000000..0c4c406c74
--- /dev/null
+++ b/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-with-markdown.html
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-without-markdown.html b/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-without-markdown.html
new file mode 100644
index 0000000000..7c92922bb0
--- /dev/null
+++ b/common/lib/xmodule/xmodule/js/fixtures/combinedopenended-without-markdown.html
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/common/lib/xmodule/xmodule/js/fixtures/problem-with-markdown.html b/common/lib/xmodule/xmodule/js/fixtures/problem-with-markdown.html
index be4fcd5ecc..a7681ed776 100644
--- a/common/lib/xmodule/xmodule/js/fixtures/problem-with-markdown.html
+++ b/common/lib/xmodule/xmodule/js/fixtures/problem-with-markdown.html
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee b/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee
new file mode 100644
index 0000000000..fb9312724a
--- /dev/null
+++ b/common/lib/xmodule/xmodule/js/spec/combinedopenended/edit_spec.coffee
@@ -0,0 +1,145 @@
+describe 'OpenEndedMarkdownEditingDescriptor', ->
+ describe 'save stores the correct data', ->
+ it 'saves markdown from markdown editor', ->
+ loadFixtures 'combinedopenended-with-markdown.html'
+ @descriptor = new OpenEndedMarkdownEditingDescriptor($('.combinedopenended-editor'))
+ saveResult = @descriptor.save()
+ expect(saveResult.metadata.markdown).toEqual('markdown')
+ expect(saveResult.data).toEqual('\nmarkdown\n')
+ it 'clears markdown when xml editor is selected', ->
+ loadFixtures 'combinedopenended-with-markdown.html'
+ @descriptor = new OpenEndedMarkdownEditingDescriptor($('.combinedopenended-editor'))
+ @descriptor.createXMLEditor('replace with markdown')
+ saveResult = @descriptor.save()
+ expect(saveResult.metadata.markdown).toEqual(null)
+ expect(saveResult.data).toEqual('replace with markdown')
+ it 'saves xml from the xml editor', ->
+ loadFixtures 'combinedopenended-without-markdown.html'
+ @descriptor = new OpenEndedMarkdownEditingDescriptor($('.combinedopenended-editor'))
+ saveResult = @descriptor.save()
+ expect(saveResult.metadata.markdown).toEqual(null)
+ expect(saveResult.data).toEqual('xml only')
+
+ describe 'insertPrompt', ->
+ it 'inserts the template if selection is empty', ->
+ revisedSelection = OpenEndedMarkdownEditingDescriptor.insertPrompt('')
+ expect(revisedSelection).toEqual(OpenEndedMarkdownEditingDescriptor.promptTemplate)
+ it 'recognizes html in the prompt', ->
+ revisedSelection = OpenEndedMarkdownEditingDescriptor.insertPrompt('[prompt]