var Sublevel = require('../')
var level = require('level-test')()

var tape = require('tape')

tape('insert in prehook', function (t) {

  var base = Sublevel(level('test-sublevel'))

  Sublevel(base, { sep: '~' })

  var a   = base.sublevel('A')
  var b   = base.sublevel('B')

  var as = {}
  var aas = {}

  a.pre(function (op, add) {
    as[op.key] = op.value
    console.log('A   :', op)
    add({
      key: op.key, value: op.value, 
      type: 'put', prefix: b.prefix()
    })
  })

  var val = 'random_' + Math.random()
  a.put('foo', val, function () {

    b.get('foo', function (err, _val) {
      t.equal(_val, val)
      t.end()
    })
  })

})

tape('insert in prehook 2', function (t) {

  var base = Sublevel(level('test-sublevel2'))

  Sublevel(base, '~')

  var a   = base.sublevel('A')
  var b   = base.sublevel('B')

  var as = {}
  var aas = {}

  a.pre(function (op, add) {
    as[op.key] = op.value
    console.log('A   :', op)
    add({
      key: op.key, value: op.value, 
      type: 'put', prefix: b
    })
  })

  var val = 'random_' + Math.random()
  a.put('foo', val, function () {

    b.get('foo', function (err, _val) {
      t.equal(_val, val)
      t.end()
    })
  })

})


tape('insert in prehook - encodings', function (t) {

  var base = Sublevel(level('test-sublevel3', {valueEncoding: 'json'}))

  Sublevel(base, '~')

  var b = base.sublevel('B', {valueEncoding: 'utf8'})

  var as = {}
//  var aas = {}

  base.pre(function (op, add) {
    as[op.key] = op.value
    console.log('A   :', op)
    add({
      key: op.key, value: JSON.stringify({value: op.value}), 
      type: 'put', prefix: b//, valueEncoding: 'utf8'
    })
  })

  var val = {'random': + Math.random()}
  base.put('foo', val, function (err) {
    if(err) throw err
    b.get('foo', function (err, _val) {
      console.log('GET', _val, val)
      t.deepEqual(JSON.parse(_val), {value: val})
      t.end()
    })
  })

})


