Add jest unit tests for adding and deleting notebooks
This commit is contained in:
parent
8b26f60632
commit
f5ac7539bc
2 changed files with 125 additions and 16 deletions
|
|
@ -192,7 +192,7 @@ export default class LibraryNav extends React.Component {
|
|||
var nbUuid = uuid.v4().toUpperCase()
|
||||
var nbPath = utils.getNotebookPathFromUUID(nbUuid)
|
||||
|
||||
var nb = {
|
||||
var notebook = {
|
||||
'state': 'editing',
|
||||
'title': '',
|
||||
'uuid': nbUuid,
|
||||
|
|
@ -201,20 +201,17 @@ export default class LibraryNav extends React.Component {
|
|||
}
|
||||
|
||||
mkdirp(nbPath, (err) => {
|
||||
if (callback){
|
||||
callback(nb, err)
|
||||
}
|
||||
if(err){
|
||||
console.log('There was an error creating the directory '+notePath)
|
||||
console.log(err)
|
||||
}
|
||||
else{
|
||||
this.createNotebookMeta(notebook)
|
||||
this.createNotebookMeta(notebook, callback)
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
createNotebookMeta = (notebook) => {
|
||||
createNotebookMeta = (notebook, callback) => {
|
||||
var notePath = utils.getNotebookPath(notebook)
|
||||
var meta = {
|
||||
'name': notebook.title,
|
||||
|
|
@ -225,6 +222,18 @@ export default class LibraryNav extends React.Component {
|
|||
if(err){
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
var nbs = this.state.notebooks
|
||||
nbs.splice(0, 0, notebook)
|
||||
|
||||
this.setState({notebooks: nbs}, () => {
|
||||
if(this.refs['textField0']){
|
||||
this.refs['textField0'].focus()
|
||||
}
|
||||
if(callback){
|
||||
callback(notebook, err)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
};
|
||||
|
|
@ -249,13 +258,9 @@ export default class LibraryNav extends React.Component {
|
|||
}
|
||||
};
|
||||
|
||||
addNotebookTapped = () => {
|
||||
this.createNewNotebook((nb, err) => {
|
||||
var nbs = this.state.notebooks
|
||||
nbs.splice(0, 0, nb)
|
||||
this.setState({notebooks: nbs}, () => {
|
||||
this.refs['textField0'].focus()
|
||||
})
|
||||
addNotebookTapped = (callback) => {
|
||||
this.createNewNotebook(callback, (nb, err) => {
|
||||
|
||||
})
|
||||
};
|
||||
|
||||
|
|
@ -284,13 +289,21 @@ export default class LibraryNav extends React.Component {
|
|||
this.props.closeContextMenu()
|
||||
}
|
||||
|
||||
deleteTapped = (i) => {
|
||||
deleteTapped = (i, callback) => {
|
||||
var nbs = this.state.notebooks
|
||||
var nb = nbs.splice(i, 1)[0]
|
||||
|
||||
rmdir(nb.path, (err)=>{if(err){console.log(err)}})
|
||||
rmdir(nb.path, (err)=>{
|
||||
if(err){
|
||||
console.log(err)
|
||||
}
|
||||
this.setState({notebooks: nbs}, ()=>{
|
||||
if(callback){
|
||||
callback(nb, err)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
this.setState({notebooks: nbs})
|
||||
this.props.closeContextMenu()
|
||||
}
|
||||
|
||||
|
|
@ -402,6 +415,7 @@ export default class LibraryNav extends React.Component {
|
|||
{this.state.navItems.map((item, i) => {
|
||||
return <ListItem
|
||||
primaryText={item.name}
|
||||
ref={item.name}
|
||||
key={i}
|
||||
leftIcon={item.icon}
|
||||
rightIcon={<Badge badgeContent={item.notes} />}
|
||||
|
|
@ -419,6 +433,7 @@ export default class LibraryNav extends React.Component {
|
|||
<div className="inline">NoteBooks</div>
|
||||
<IconButton
|
||||
onTouchTap={this.addNotebookTapped}
|
||||
ref="addNotebookBtn"
|
||||
tooltip="Add New Notebook"
|
||||
touch={true}
|
||||
style={{'zIndex': 1000}}
|
||||
|
|
@ -434,3 +449,7 @@ export default class LibraryNav extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
LibraryNav.defaultProps = {
|
||||
closeContextMenu: () => {}
|
||||
};
|
||||
|
||||
|
|
|
|||
90
app/components/__tests__/LibraryNav-test.jsx
Normal file
90
app/components/__tests__/LibraryNav-test.jsx
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
jest.autoMockOff()
|
||||
|
||||
import React from 'react'
|
||||
import ReactDOM from 'react-dom'
|
||||
import TestUtils from 'react-addons-test-utils'
|
||||
|
||||
import * as utils from '../../utils'
|
||||
utils.APP_NAME = 'JestTest'
|
||||
import path from 'path'
|
||||
|
||||
import fs from 'fs'
|
||||
|
||||
const injectTapEventPlugin = require("react-tap-event-plugin")
|
||||
injectTapEventPlugin()
|
||||
|
||||
const LibraryNav = require('../LibraryNav').default
|
||||
|
||||
function tap(element){
|
||||
var dom = ReactDOM.findDOMNode(element).firstChild
|
||||
TestUtils.Simulate.touchTap(dom)
|
||||
}
|
||||
|
||||
describe('LibraryNav', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
})
|
||||
|
||||
it('test index select', () => {
|
||||
var libraryNav = TestUtils.renderIntoDocument(
|
||||
<LibraryNav id="library-nav" className="left inline fill-height" />
|
||||
)
|
||||
expect(libraryNav.state.navItems.length).toEqual(5)
|
||||
|
||||
var libraryNavList = libraryNav.refs.mainList
|
||||
|
||||
var entriesItem = libraryNav.refs.Entries
|
||||
tap(entriesItem)
|
||||
expect(libraryNavList.state.selectedIndex).toEqual(0)
|
||||
|
||||
var allNotesItem = libraryNav.refs['All Notes']
|
||||
tap(allNotesItem)
|
||||
expect(libraryNavList.state.selectedIndex).toEqual(4)
|
||||
})
|
||||
|
||||
it('test add notebook', (done) => {
|
||||
|
||||
var libraryNav = TestUtils.renderIntoDocument(
|
||||
<LibraryNav id="library-nav" className="left inline fill-height" />
|
||||
)
|
||||
|
||||
var initialLen = libraryNav.state.notebooks.length
|
||||
|
||||
var callback = (notebook) => {
|
||||
var afterLen = libraryNav.state.notebooks.length
|
||||
|
||||
expect(afterLen).toBeGreaterThan(initialLen)
|
||||
|
||||
var nbExists = fs.existsSync(notebook.path)
|
||||
var nbMetaExists = fs.existsSync(path.join(notebook.path, 'meta.json'))
|
||||
expect(nbExists).toEqual(true)
|
||||
|
||||
expect(nbMetaExists).toEqual(true)
|
||||
|
||||
done()
|
||||
}
|
||||
libraryNav.addNotebookTapped(callback)
|
||||
})
|
||||
|
||||
it('test delete notebook', (done) => {
|
||||
var libraryNav = TestUtils.renderIntoDocument(
|
||||
<LibraryNav id="library-nav" className="left inline fill-height" />
|
||||
)
|
||||
|
||||
var initialLen = libraryNav.state.notebooks.length
|
||||
|
||||
var callback = (notebook) => {
|
||||
var afterLen = libraryNav.state.notebooks.length
|
||||
|
||||
expect(initialLen).toBeGreaterThan(afterLen)
|
||||
|
||||
var nbExists = fs.existsSync(notebook.path)
|
||||
expect(nbExists).toEqual(false)
|
||||
|
||||
done()
|
||||
}
|
||||
|
||||
libraryNav.deleteTapped(0, callback)
|
||||
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue