Peter Stuifzand
79aba57dcb
All checks were successful
continuous-integration/drone/push Build is passing
Solution: add tests for this problem, and remove indent code when moving up
105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
import createCursor from '../cursor'
|
|
import createStore from '../store'
|
|
|
|
describe("A cursor", function() {
|
|
beforeEach(function() {
|
|
this.cursor = createCursor(0)
|
|
})
|
|
|
|
it("contains a get method", function() {
|
|
expect(this.cursor.get()).toBe(0)
|
|
})
|
|
|
|
it("contains a set method", function() {
|
|
this.cursor.set(4)
|
|
expect(this.cursor.get()).toBe(4)
|
|
})
|
|
|
|
it("contains an atFirst method", function() {
|
|
expect(this.cursor.atFirst()).toBe(true)
|
|
})
|
|
|
|
describe("with a store", function () {
|
|
beforeEach(function () {
|
|
this.store = createStore([])
|
|
})
|
|
|
|
it("contains an atEnd method", function () {
|
|
this.cursor.set(0)
|
|
expect(this.cursor.atEnd(this.store)).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe("with a store", function () {
|
|
beforeEach(function () {
|
|
this.store = createStore([
|
|
{indented:0, fold: 'open'},
|
|
{indented:1, fold: 'open'},
|
|
{indented:2, fold: 'open'},
|
|
{indented:3, fold: 'open'},
|
|
{indented:1, fold: 'open'},
|
|
])
|
|
})
|
|
|
|
it("moveUp moves up by one", function() {
|
|
this.cursor.set(4)
|
|
this.cursor.moveUp(this.store)
|
|
expect(this.cursor.get()).toBe(3)
|
|
})
|
|
})
|
|
|
|
describe("with a store with current closed", function () {
|
|
beforeEach(function () {
|
|
this.store = createStore([
|
|
{indented:0, fold: 'open'},
|
|
{indented:1, fold: 'open'},
|
|
{indented:2, fold: 'open'},
|
|
{indented:3, fold: 'open'},
|
|
{indented:1, fold: 'closed', hidden: true},
|
|
])
|
|
})
|
|
|
|
it("moveUp moves up by one", function() {
|
|
this.cursor.set(4)
|
|
this.cursor.moveUp(this.store)
|
|
expect(this.cursor.get()).toBe(3)
|
|
})
|
|
})
|
|
|
|
describe("with a store with above closed", function () {
|
|
beforeEach(function () {
|
|
this.store = createStore([
|
|
{indented:0, fold: 'open'},
|
|
{indented:1, fold: 'open'},
|
|
{indented:2, fold: 'open'},
|
|
{indented:3, fold: 'closed', hidden: true},
|
|
{indented:1, fold: 'open'},
|
|
])
|
|
})
|
|
|
|
it("moveUp moves up by one", function() {
|
|
this.cursor.set(4)
|
|
this.cursor.moveUp(this.store)
|
|
expect(this.cursor.get()).toBe(2)
|
|
})
|
|
})
|
|
|
|
describe("with a store with multiple above closed", function () {
|
|
beforeEach(function () {
|
|
this.store = createStore([
|
|
{indented:0, fold: 'open'},
|
|
{indented:1, fold: 'open'},
|
|
{indented:2, fold: 'closed', hidden: true},
|
|
{indented:3, fold: 'closed', hidden: true},
|
|
{indented:1, fold: 'open'},
|
|
])
|
|
})
|
|
|
|
it("moveUp moves up by one", function() {
|
|
this.cursor.set(4)
|
|
this.cursor.moveUp(this.store)
|
|
expect(this.cursor.get()).toBe(1)
|
|
})
|
|
})
|
|
})
|