diff --git a/src/js/models/marker.js b/src/js/models/marker.js index 0af3e4487..b45bae582 100644 --- a/src/js/models/marker.js +++ b/src/js/models/marker.js @@ -23,7 +23,7 @@ const Marker = class Marker extends LinkedItem { clone() { const clonedMarkups = this.markups.slice(); - return new this.constructor(this.value, clonedMarkups); + return this.builder.createMarker(this.value, clonedMarkups); } empty() { diff --git a/tests/unit/models/marker-test.js b/tests/unit/models/marker-test.js index 3035b56b6..9678e54fd 100644 --- a/tests/unit/models/marker-test.js +++ b/tests/unit/models/marker-test.js @@ -116,3 +116,11 @@ test('#split creates an initial empty marker if the offset is 0', (assert) => { assert.equal(afterMarkers[0].value, 'hi there!'); assert.ok(afterMarkers[1].empty(), 'final afterMarker is empty'); }); + +test('#clone a marker', (assert) => { + const marker = builder.createMarker('hi there!'); + const cloned = marker.clone(); + assert.equal(marker.builder, cloned.builder, 'builder is present'); + assert.equal(marker.value, cloned.value, 'value is present'); + assert.equal(marker.markups.length, cloned.markups.length, 'markup length is the same'); +});