var from = require('from2-array')
var concat = require('concat-stream')

module.exports.blobWriteStream = function(test, common) {
  test('piping a blob into a blob write stream', function(t) {
    common.setup(test, function(err, store) {
      t.notOk(err, 'no setup err')
      var ws = store.createWriteStream({name: 'test.js'}, function(err, obj) {
        t.error(err)
        t.ok(obj.key, 'blob has key')
        common.teardown(test, store, obj, function(err) {
          t.error(err)
          t.end()
        })
      })
      from([new Buffer('foo'), new Buffer('bar')]).pipe(ws)
    })
  })
}

module.exports.blobReadStream = function(test, common) {
  test('reading a blob as a stream', function(t) {
    common.setup(test, function(err, store) {
      t.notOk(err, 'no setup err')
      
      var ws = store.createWriteStream({name: 'test.js'}, function(err, blob) {
        t.notOk(err, 'no blob write err')
        t.ok(blob.key, 'blob has key')
        
        var rs = store.createReadStream(blob)

        rs.on('error', function(e) {
          t.false(e, 'no read stream err')
          t.end()
        })

        rs.pipe(concat(function(file) {
          t.equal(file.length, 6, 'blob length is correct')
          common.teardown(test, store, blob, function(err) {
            t.error(err)
            t.end()
          })
        }))
      })
      
      from([new Buffer('foo'), new Buffer('bar')]).pipe(ws)
    })
  })
}

module.exports.blobReadError = function(test, common) {
  test('reading a blob that does not exist', function(t) {
    common.setup(test, function(err, store) {
      t.notOk(err, 'no setup err')
    
      var rs = store.createReadStream({name: 'test.js', key: '8843d7f92416211de9ebb963ff4ce28125932878'})

      rs.on('error', function(e) {
        t.ok(e, 'got a read stream err')
        t.ok(e.notFound, 'error reports not found')
        common.teardown(test, store, undefined, function(err) {
          t.error(err)
          t.end()
        })
      })
    })
    
  })
}

module.exports.blobExists = function(test, common) {
  test('check if a blob exists', function(t) {
    common.setup(test, function(err, store) {
      t.notOk(err, 'no setup err')
      var blobMeta = {name: 'test.js', key: '8843d7f92416211de9ebb963ff4ce28125932878'}
      store.exists(blobMeta, function(err, exists) {
        t.error(err)
        t.notOk(exists, 'does not exist')
        
        var ws = store.createWriteStream({name: 'test.js'}, function(err, obj) {
          t.notOk(err, 'no blob write err')
          t.ok(obj.key, 'blob has key')
          
          // on this .exists call use the metadata from the writeStream
          store.exists(obj, function(err, exists) {
            t.error(err)
            t.ok(exists, 'exists')
            common.teardown(test, store, obj, function(err) {
              t.error(err)
              t.end()
            })
          })
        })
        
        from([new Buffer('foo'), new Buffer('bar')]).pipe(ws)
      })
      
    })
  })
}

module.exports.all = function (test, common) {
  module.exports.blobWriteStream(test, common)
  module.exports.blobReadStream(test, common)
  module.exports.blobReadError(test, common)
  module.exports.blobExists(test, common)
}

@@ -1832,24 +1832,27 @@
 rr')%0A       
+ //
  t.ok(e.notF

Remove breaking change from 3.0.0 range