wip: wlxml layer
[fnpeditor.git] / src / wlxml / extensions / edumed / edumed.test.js
1 define(function(require) {
2     
3 'use strict';
4 /* globals describe, it */
5
6 var chai = require('libs/chai'),
7     wlxml = require('wlxml/wlxml');
8     //edumedExtension = require('./edumed.js');
9
10 var expect = chai.expect;
11
12
13 var getDocumentFromXML = function(xml, options) {
14     var doc = wlxml.WLXMLDocumentFromXML(xml, options || {});
15     //doc.registerExtension(edumedExtension);
16     return doc;
17 };
18
19
20 describe('Setting answer', function() {
21     it('sets answer (1)', function() {
22         /* jshint multistr:true */
23         var doc = getDocumentFromXML('\
24                 <div class="exercise.order">\
25                     <div class="list.orderable">\
26                         <div class="item.answer" answer="3">Element 3</div>\
27                         <div class="item.answer" answer="1">Element 1</div>\
28                         <div class="item.answer" answer="2">Element 2</div>\
29                     </div>\
30                 </div>');
31
32         doc.root.object.getItems()[2].setAnswer(1);
33
34         var items = doc.root.object.getItems();
35
36         expect(items[0].getAnswer()).to.equal(3);
37         expect(items[1].getAnswer()).to.equal(2);
38         expect(items[2].getAnswer()).to.equal(1);
39
40     });
41     it('sets answer (2)', function() {
42         /* jshint multistr:true */
43         var doc = getDocumentFromXML('\
44                 <div class="exercise.order">\
45                     <div class="list.orderable">\
46                         <div class="item.answer" answer="1">Element 1</div>\
47                         <div class="item.answer" answer="2">Element 2</div>\
48                         <div class="item.answer" answer="3">Element 3</div>\
49                     </div>\
50                 </div>');
51         doc.transaction(function() {
52             doc.root.object.getItems()[2].setAnswer(2);
53         }, {
54             error: function(e) { throw e;}
55         });
56         
57
58         var items = doc.root.object.getItems();
59
60         expect(items[0].getAnswer()).to.equal(1);
61         expect(items[1].getAnswer()).to.equal(3);
62         expect(items[2].getAnswer()).to.equal(2);
63
64     });
65 });
66
67 describe('Assign exercise', function() {
68     /* jshint multistr:true */
69     it('assigns source to destination', function() {
70         var doc = getDocumentFromXML('\
71                 <div class="exercise.assign">\
72                     <div class="list" target="kategorie">\
73                         <div class="item.answer">Element 1</div>\
74                         <div class="item.answer">Element 2</div>\
75                     </div>\
76                     <div class="list" id="kategorie">\
77                         <div class="item" id="kat1">Kategoria 1</div>\
78                         <div class="item" id="kat2">Kategoria 2</div>\
79                     </div>\
80                 </div>'),
81             exercise = doc.root,
82             element = exercise.object.getSourceItems()[1],
83             categories = exercise.object.getDestinationItems(),
84             elementNode = exercise.contents()[0].contents()[1];
85         
86         element.assignTo(categories[0]);
87         expect(elementNode.getAttr('answer')).to.equal('kat1');
88         expect(element.isAssignedTo(categories[0])).to.equal(true);
89
90         element.assignTo(categories[1]);
91         expect(elementNode.getAttr('answer')).to.equal('kat1,kat2');
92         expect(element.isAssignedTo(categories[1])).to.equal(true);
93     });
94     it('removes assignment between source and destination', function() {
95         var doc = getDocumentFromXML('\
96                 <div class="exercise.assign">\
97                     <div class="list" target="kategorie">\
98                         <div class="item.answer">Element 1</div>\
99                         <div class="item.answer" answer="kat1,kat2">Element 2</div>\
100                     </div>\
101                     <div class="list" id="kategorie">\
102                         <div class="item" id="kat1">Kategoria 1</div>\
103                         <div class="item" id="kat2">Kategoria 2</div>\
104                     </div>\
105                 </div>'),
106             exercise = doc.root,
107             element = exercise.object.getSourceItems()[1],
108             categories = exercise.object.getDestinationItems(),
109             elementNode = exercise.contents()[0].contents()[1];
110         
111         element.removeFrom(categories[0]);
112         expect(elementNode.getAttr('answer')).to.equal('kat2');
113
114         element.removeFrom(categories[1]);
115         expect(elementNode.getAttr('answer')).to.equal(undefined, 'empty');
116     });
117 });
118
119
120
121 });