var helper = require(__dirname + '/test-helper');

test('emits notice message', function() {
  //TODO this doesn't work on all versions of postgres
  return false;
  var client = helper.client();
  client.query('create temp table boom(id serial, size integer)');
  assert.emits(client, 'notice', function(notice) {
    assert.ok(notice != null);
    //TODO ending connection after notice generates weird errors
    process.nextTick(function() {
      client.end();
    })
  });
})

test('emits notify message', function() {
  var client = helper.client();
  client.query('LISTEN boom', assert.calls(function() {
    var otherClient = helper.client();
    otherClient.query('LISTEN boom', assert.calls(function() {
      assert.emits(client, 'notification', function(msg) {
        //make sure PQfreemem doesn't invalidate string pointers
        setTimeout(function() {
          assert.equal(msg.channel, 'boom');
          assert.ok(msg.payload == 'omg!' /*9.x*/ || msg.payload == '' /*8.x*/, "expected blank payload or correct payload but got " + msg.message)
          client.end()
        }, 100)

      });
      assert.emits(otherClient, 'notification', function(msg) {
        assert.equal(msg.channel, 'boom');
        otherClient.end();
      });

      client.query("NOTIFY boom, 'omg!'", function(err, q) {
        if(err) {
          //notify not supported with payload on 8.x
          client.query("NOTIFY boom")
        }
      });
    }));
  }));
})

