// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

'use strict';

tvcm.require('ui.spy');
tvcm.require('tvcm.event_target');

tvcm.unittest.testSuite('ui.spy_test', function() {
  /**
   * @constructor
   */
  function FakeChannel() {
    tvcm.EventTarget.call(this);
  }

  FakeChannel.prototype = {
    __proto__: tvcm.EventTarget.prototype,

    send: function(msg) {
    },

    dispatchMessage: function(msg) {
      var event = new Event('message', false, false);
      event.data = msg;
      this.dispatchEvent(event);
    }
  };

  test('basic', function() {
    var channel = new FakeChannel();

    var spy = new ui.Spy();
    spy.style.width = '600px';
    spy.style.height = '400px';
    spy.style.border = '1px solid black';
    this.addHTMLOutput(spy);
    spy.channel = channel;

    channel.dispatchMessage({data: 'alo there'});

    // Fake out echo reply
    channel.send = function(msg) {
      setTimeout(function() {
        channel.dispatchMessage({data: {type: 'reply', msg: msg}});
      }, 10);
    }
  });

});