const test = require('ava')
const path = require('path')
const { parse } = require('browser/lib/RcParser')

// Unit test
test('RcParser should return a json object', t => {
  const validJson = { 'editor': { 'keyMap': 'vim', 'switchPreview': 'BLUR', 'theme': 'monokai' }, 'hotkey': { 'toggleMain': 'Control + L' }, 'listWidth': 135, 'navWidth': 135 }
  const allJson = { 'amaEnabled': true, 'editor': { 'fontFamily': 'Monaco, Consolas', 'fontSize': '14', 'indentSize': '2', 'indentType': 'space', 'keyMap': 'vim', 'switchPreview': 'BLUR', 'theme': 'monokai' }, 'hotkey': { 'toggleMain': 'Cmd + Alt + L' }, 'isSideNavFolded': false, 'listStyle': 'DEFAULT', 'listWidth': 174, 'navWidth': 200, 'preview': { 'codeBlockTheme': 'dracula', 'fontFamily': 'Lato', 'fontSize': '14', 'lineNumber': true }, 'sortBy': 'UPDATED_AT', 'ui': { 'defaultNote': 'ALWAYS_ASK', 'disableDirectWrite': false, 'theme': 'default' }, 'zoom': 1 }

  // [input, expected]
  const validTestCases = [
    ['.boostnoterc.valid', validJson],
    ['.boostnoterc.all', allJson]
  ]

  const invalidTestCases = [
    ['.boostnoterc.invalid', {}]
  ]

  validTestCases.forEach(validTestCase => {
    const [input, expected] = validTestCase
    t.is(parse(filePath(input)).editor.keyMap, expected.editor.keyMap, `Test for getTodoStatus() input: ${input} expected: ${expected.keyMap}`)
  })

  invalidTestCases.forEach(invalidTestCase => {
    const [input, expected] = invalidTestCase
    t.is(parse(filePath(input)).editor, expected.editor, `Test for getTodoStatus() input: ${input} expected: ${expected.editor}`)
  })
})

function filePath (filename) {
  return path.join(`${__dirname}/boostnoterc`, filename)
}
