1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-12 17:26:17 +00:00
Files
Boostnote/tests/fixtures/TestDummy.js

195 lines
4.6 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) + 2
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) + 2
for (var i = 0; i < noteCount; i++) {
var key = keygen(true)
while (notesData.some(note => note.key === key)) {
key = keygen(true)
}
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(true)
while (folderNotes.some(note => note.key === key)) {
key = keygen(true)
}
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,
dummyNote
}