~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/app/javascript/lazr/anim/tests/anim.js

[r=deryck][bug=803954] Bring lazr-js source into lp tree and package
        yui as a dependency

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 2009, Canonical Ltd. All rights reserved. */
 
2
 
 
3
YUI().use('lazr.anim', 'lazr.testing.runner', 'node',
 
4
          'event', 'event-simulate', 'console', function(Y) {
 
5
 
 
6
var Assert = Y.Assert;  // For easy access to isTrue(), etc.
 
7
 
 
8
var suite = new Y.Test.Suite("Anim Tests");
 
9
 
 
10
suite.add(new Y.Test.Case({
 
11
 
 
12
    name: 'anim_basics',
 
13
 
 
14
    setUp: function() {
 
15
        this.workspace = Y.one('#workspace');
 
16
        if (!this.workspace){
 
17
            Y.one(document.body).appendChild(Y.Node.create(
 
18
                '<div id="workspace">'
 
19
                + '<table id="anim-table">'
 
20
                + '<tr id="anim-table-tr">'
 
21
                + '<td id="anim-table-td1" style="background: #eeeeee">foo</td>'
 
22
                + '<td id="anim-table-td2" style="background: #eeeeee">bar</td>'
 
23
                + '</tr></table></div>'));
 
24
            this.workspace = Y.one('#workspace');
 
25
        }
 
26
    },
 
27
 
 
28
    tearDown: function() {
 
29
        this.workspace.get('parentNode').removeChild(this.workspace);
 
30
    },
 
31
 
 
32
    test_resolveNodeListFrom_selector: function() {
 
33
        var nodelist = Y.lazr.anim.resolveNodeListFrom('#anim-table-td1');
 
34
        var nodelist_nodes = (nodelist._nodes !== undefined);
 
35
        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a selector');
 
36
    },
 
37
 
 
38
    test_resolveNodeListFrom_node: function() {
 
39
        var node = Y.one('#anim-table-td1');
 
40
        var nodelist = Y.lazr.anim.resolveNodeListFrom(node);
 
41
        var nodelist_nodes = (nodelist._nodes !== undefined);
 
42
        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a Node');
 
43
    },
 
44
 
 
45
    test_resolveNodeListFrom_node_list: function() {
 
46
        var nodelist = Y.all('#anim-table td');
 
47
        var nodelist = Y.lazr.anim.resolveNodeListFrom(nodelist);
 
48
        var nodelist_nodes = (nodelist._nodes !== undefined);
 
49
        Assert.isTrue(nodelist_nodes, 'Not a nodelist from a NodeList');
 
50
    },
 
51
 
 
52
    test_resolveNodeListFrom_anythine_else: function() {
 
53
        var succeed = true;
 
54
        try {
 
55
            var nodelist = Y.lazr.anim.resolveNodeListFrom(
 
56
                {crazy: true, broken: 'definitely'});
 
57
        } catch(e) {
 
58
            succeed = false;
 
59
        }
 
60
        Assert.isFalse(succeed, "Somehow, we're cleverer than we thought.");
 
61
    },
 
62
 
 
63
    test_green_flash_td1: function() {
 
64
        // works as expected on a single node,
 
65
        // without coercion into a NodeList here
 
66
        var node = Y.one('#anim-table-td1');
 
67
        var bgcolor = node.getStyle('backgroundColor');
 
68
        var anim = Y.lazr.anim.green_flash(
 
69
            {node: node,
 
70
             to: {backgroundColor: bgcolor},
 
71
             duration: 0.2}
 
72
        );
 
73
        anim.run();
 
74
        this.wait(function() {
 
75
            Assert.areEqual(
 
76
                bgcolor,
 
77
                node.getStyle('backgroundColor'),
 
78
                'background colors do not match'
 
79
                );
 
80
            }, 500
 
81
        );
 
82
    },
 
83
 
 
84
    test_green_flash_td1_by_selector: function() {
 
85
        // works as expected on a single node selector,
 
86
        // without coercion into a NodeList here
 
87
        var node = Y.one('#anim-table-td1');
 
88
        var bgcolor = node.getStyle('backgroundColor');
 
89
        var anim = Y.lazr.anim.green_flash(
 
90
            {node: '#anim-table-td1',
 
91
             to: {backgroundColor: bgcolor},
 
92
             duration: 0.2}
 
93
        );
 
94
        anim.run();
 
95
        this.wait(function() {
 
96
            Assert.areEqual(
 
97
                bgcolor,
 
98
                node.getStyle('backgroundColor'),
 
99
                'background colors do not match'
 
100
                );
 
101
            }, 500
 
102
        );
 
103
    },
 
104
 
 
105
    test_green_flash_multi: function() {
 
106
        // works with a native NodeList as well
 
107
        var nodelist = Y.all('#anim-table td');
 
108
        var red = '#ff0000';
 
109
        var backgrounds = [];
 
110
        Y.each(nodelist, function(n) {
 
111
                   backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
 
112
               });
 
113
        var anim = Y.lazr.anim.green_flash(
 
114
            {node: nodelist,
 
115
             to: {backgroundColor: red},
 
116
             duration: 5}
 
117
        );
 
118
        anim.run();
 
119
        this.wait(function() {
 
120
                Assert.areNotEqual(
 
121
                    backgrounds[0].node.getStyle('backgroundColor'),
 
122
                    red,
 
123
                    'background of 0 has mysteriously jumped to the end color.'
 
124
                );
 
125
                Assert.areNotEqual(
 
126
                    backgrounds[1].node.getStyle('backgroundColor'),
 
127
                    red,
 
128
                    'background of 1 has mysteriously jumped to the end color.'
 
129
                );
 
130
                Assert.areNotEqual(
 
131
                    backgrounds[0].node.getStyle('backgroundColor'),
 
132
                    backgrounds[0].bg,
 
133
                    'background of 0 has not changed at all.'
 
134
                );
 
135
                Assert.areNotEqual(
 
136
                    backgrounds[1].node.getStyle('backgroundColor'),
 
137
                    backgrounds[1].bg,
 
138
                    'background of 1 has not changed at all.'
 
139
                );
 
140
            }, 1500
 
141
        );
 
142
    },
 
143
 
 
144
    test_green_flash_multi_by_selector: function() {
 
145
        // works with a native NodeList as well
 
146
        var nodelist = Y.all('#anim-table td');
 
147
        var red = '#ff0000';
 
148
        var backgrounds = [];
 
149
        Y.each(nodelist, function(n) {
 
150
                   backgrounds.push({bg: n.getStyle('backgroundColor'), node: n});
 
151
               });
 
152
        var anim = Y.lazr.anim.green_flash(
 
153
            {node: '#anim-table td',
 
154
             to: {backgroundColor: red},
 
155
             duration: 2}
 
156
        );
 
157
        anim.run();
 
158
        this.wait(function() {
 
159
                Assert.areNotEqual(
 
160
                    backgrounds[0].node.getStyle('backgroundColor'),
 
161
                    red,
 
162
                    'background of 0 has mysteriously jumped to the end color.'
 
163
                );
 
164
                Assert.areNotEqual(
 
165
                    backgrounds[1].node.getStyle('backgroundColor'),
 
166
                    red,
 
167
                    'background of 1 has mysteriously jumped to the end color.'
 
168
                );
 
169
                Assert.areNotEqual(
 
170
                    backgrounds[0].node.getStyle('backgroundColor'),
 
171
                    backgrounds[0].bg,
 
172
                    'background of 0 has not changed at all.'
 
173
                );
 
174
                Assert.areNotEqual(
 
175
                    backgrounds[1].node.getStyle('backgroundColor'),
 
176
                    backgrounds[1].bg,
 
177
                    'background of 1 has not changed at all.'
 
178
                );
 
179
            }, 500
 
180
        );
 
181
    }
 
182
    }));
 
183
 
 
184
Y.lazr.testing.Runner.add(suite);
 
185
Y.lazr.testing.Runner.run();
 
186
 
 
187
});