1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 01:36:22 +00:00
Files
Boostnote/tests/fixtures/TestDummy.js
2016-09-22 11:01:23 +09:00

180 lines
4.4 KiB
JavaScript

const faker = require('faker')
const keygen = require('browser/lib/keygen')
const _ = require('lodash')
const sander = require('sander')
const CSON = require('@rokt33r/season')
const path = require('path')
function dummyFolder (override = {}) {
var data = {
name: faker.lorem.word(),
color: faker.internet.color()
}
if (override.key == null) data.key = keygen()
Object.assign(data, override)
return data
}
function dummyBoostnoteJSONData (override = {}, isLegacy = false) {
var data = {}
if (override.folders == null) {
data.folders = []
var folderCount = Math.floor((Math.random() * 5)) + 1
for (var i = 0; i < folderCount; i++) {
var key = keygen()
while (data.folders.some((folder) => folder.key === key)) {
key = keygen()
}
data.folders.push(dummyFolder({
key
}))
}
}
if (!isLegacy) data.version = '1.0'
Object.assign(data, override)
return data
}
function dummyNote (override = {}) {
var data = Math.random() > 0.5
? {
type: 'MARKDOWN_NOTE',
content: faker.lorem.lines()
}
: {
type: 'SNIPPET_NOTE',
description: faker.lorem.lines(),
snippets: [{
name: faker.system.fileName(),
mode: 'text',
content: faker.lorem.lines()
}]
}
data.title = data.type === 'MARKDOWN_NOTE'
? data.content.split('\n').shift()
: data.description.split('\n').shift()
data.createdAt = faker.date.past()
data.updatedAt = faker.date.recent()
data.isStarred = false
data.tags = faker.lorem.words().split(' ')
if (override.key == null) data.key = keygen()
if (override.folder == null) data.folder = keygen()
Object.assign(data, override)
return data
}
/**
* @param {String}
* @param {Object}
* ```
* {
* json: {
* folders: []
* version: String(enum:'1.0')
* },
* cache: {
* key: String,
* name: String,
* type: String(enum:'FILESYSTEM'),
* path: String
* },
* notes: []
* }
* ```
* @return {[type]}
*/
function dummyStorage (storagePath, override = {}) {
var jsonData = override.json != null
? override.json
: dummyBoostnoteJSONData()
var cacheData = override.cache != null
? override.cache
: {}
if (cacheData.key == null) cacheData.key = keygen()
if (cacheData.name == null) cacheData.name = faker.random.word()
if (cacheData.type == null) cacheData.type = 'FILESYSTEM'
cacheData.path = storagePath
sander.writeFileSync(path.join(storagePath, 'boostnote.json'), JSON.stringify(jsonData))
var notesData = []
var noteCount = Math.floor((Math.random() * 15)) + 1
for (var i = 0; i < noteCount; i++) {
var key = keygen()
while (notesData.some((note) => note.key === key)) {
key = keygen()
}
var noteData = dummyNote({
key,
folder: jsonData.folders[Math.floor(Math.random() * jsonData.folders.length)].key
})
notesData.push(noteData)
}
notesData.forEach(function saveNoteCSON (note) {
CSON.writeFileSync(path.join(storagePath, 'notes', note.key + '.cson'), _.omit(note, ['key']))
})
return {
json: jsonData,
cache: cacheData,
notes: notesData
}
}
function dummyLegacyStorage (storagePath, override = {}) {
var jsonData = override.json != null
? override.json
: dummyBoostnoteJSONData({}, true)
var cacheData = override.cache != null
? override.cache
: {}
if (cacheData.key == null) cacheData.key = keygen()
if (cacheData.name == null) cacheData.name = faker.random.word()
if (cacheData.type == null) cacheData.type = 'FILESYSTEM'
cacheData.path = storagePath
sander.writeFileSync(path.join(storagePath, 'boostnote.json'), JSON.stringify(jsonData))
var notesData = []
for (var j = 0; j < jsonData.folders.length; j++) {
var folderNotes = []
var noteCount = Math.floor((Math.random() * 5)) + 1
for (var i = 0; i < noteCount; i++) {
var key = keygen(6)
while (folderNotes.some((note) => note.key === key)) {
key = keygen(6)
}
var noteData = dummyNote({
key,
folder: jsonData.folders[j].key
})
folderNotes.push(noteData)
}
notesData = notesData.concat(folderNotes)
CSON.writeFileSync(path.join(storagePath, jsonData.folders[j].key, 'data.json'), {notes: folderNotes.map((note) => _.omit(note, ['folder']))})
}
return {
json: jsonData,
cache: cacheData,
notes: notesData
}
}
module.exports = {
dummyFolder,
dummyBoostnoteJSONData,
dummyStorage,
dummyLegacyStorage
}