~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/app/javascript/tests/test_configutils.js

  • Committer: Stuart Bishop
  • Date: 2011-11-14 07:51:26 UTC
  • mfrom: (14291 devel)
  • mto: This revision was merged to the branch mainline in revision 14299.
  • Revision ID: stuart.bishop@canonical.com-20111114075126-8jhoq57i2qphmch1
Merged rocketfuel into trivial.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 2011, Canonical Ltd. All rights reserved. */
 
2
 
 
3
YUI.add('lp.baseconfigutils.test', function(Y) {
 
4
 
 
5
var baseconfigutils_test = Y.namespace('lp.baseconfigutils.test');
 
6
 
 
7
var suite = new Y.Test.Suite('BaseConfigUtil Tests');
 
8
 
 
9
var Assert = Y.Assert;
 
10
 
 
11
suite.add(new Y.Test.Case({
 
12
 
 
13
    name: 'baseconfigutils_widget_tests',
 
14
 
 
15
    tearDown: function() {
 
16
        if (Y.Lang.isValue(this.baseconfig)) {
 
17
            this.baseconfig.destroy();
 
18
        }
 
19
    },
 
20
 
 
21
    _makeSrcNode: function(id) {
 
22
        var src_node = Y.Node.create('<div></div>').set('id', id);
 
23
        Y.one('body').appendChild(src_node);
 
24
    },
 
25
 
 
26
    test_base_config_render: function() {
 
27
        // The div rendered should have sprite and config
 
28
        // class names added to it.
 
29
        this._makeSrcNode();
 
30
        this.baseconfig = new Y.lp.configutils.BaseConfigUtil({
 
31
            srcNode: Y.one('#test-div')
 
32
        });
 
33
        this.baseconfig.render();
 
34
        var config_a = Y.one('.yui3-baseconfigutil a');
 
35
        Assert.isTrue(config_a.hasClass('sprite'));
 
36
        Assert.isTrue(config_a.hasClass('config'));
 
37
    },
 
38
 
 
39
    test_base_config_anchor_attribute: function() {
 
40
        // BaseConfigUtil keeps a reference to the DOM node it created.
 
41
        this._makeSrcNode();
 
42
        this.baseconfig = new Y.lp.configutils.BaseConfigUtil({
 
43
            srcNode: Y.one('#test-div')
 
44
        });
 
45
        // anchor should be null before render.
 
46
        Assert.isNull(this.baseconfig.get('anchor'));
 
47
        // After render, "anchor" attribute should match the node via DOM.
 
48
        this.baseconfig.render();
 
49
        var config_via_dom = Y.one('.yui3-baseconfigutil a');
 
50
        Assert.areEqual(config_via_dom, this.baseconfig.get('anchor'));
 
51
    },
 
52
 
 
53
    test_base_config_click_callback: function() {
 
54
        // _handleClick should be called when the settings
 
55
        // icon is clicked.
 
56
        this._makeSrcNode();
 
57
        this.baseconfig = new Y.lp.configutils.BaseConfigUtil({
 
58
            srcNode: Y.one('#test-div')
 
59
        });
 
60
        // _handleClick already exists but does nothing.
 
61
        Assert.areSame(this.baseconfig._handleClick(), undefined);
 
62
        var click_handled = false;
 
63
        this.baseconfig._handleClick = function(e) {
 
64
            click_handled = true;
 
65
        };
 
66
        this.baseconfig.render();
 
67
        Y.one('.config').simulate('click');
 
68
        Assert.isTrue(click_handled);
 
69
    },
 
70
 
 
71
    test_base_config_extra_render_ui: function() {
 
72
        // BaseConfigUtil provides a hook for subclasses to do
 
73
        // additional renderUI work.
 
74
        this._makeSrcNode();
 
75
        this.baseconfig = new Y.lp.configutils.BaseConfigUtil({
 
76
            srcNode: Y.one('#test-div')
 
77
        });
 
78
        // _extraRenderUI already exists but does nothing.
 
79
        Assert.areSame(this.baseconfig._extraRenderUI(), undefined);
 
80
        var href = 'http://example.com/';
 
81
        var html = 'This is some sample text to add.';
 
82
        var that = this;
 
83
        this.baseconfig._extraRenderUI = function() {
 
84
            var anchor = that.baseconfig.get('anchor');
 
85
            anchor.set('href', href);
 
86
            anchor.set('innerHTML', html);
 
87
        };
 
88
        this.baseconfig.render();
 
89
        var anchor = this.baseconfig.get('anchor');
 
90
        Assert.areEqual(href, anchor.get('href'));
 
91
        Assert.areEqual(html, anchor.get('innerHTML'));
 
92
    }
 
93
 
 
94
}));
 
95
 
 
96
baseconfigutils_test.suite = suite;
 
97
 
 
98
}, '0.1', {'requires': ['test', 'node-event-simulate', 'lp.configutils']});