~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/app/javascript/server_fixture.js

  • Committer: Gary Poster
  • Date: 2011-09-20 22:33:07 UTC
  • mto: This revision was merged to the branch mainline in revision 14015.
  • Revision ID: gary.poster@canonical.com-20110920223307-zt1kr1px2ixjg9mn
Add yui xhr integration test support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright 2011 Canonical Ltd.  This software is licensed under the
 
2
 * GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 *
 
4
 * Code to support full application server testing with YUI.
 
5
 *
 
6
 * @module Y.lp.testing.serverfixture
 
7
 */
 
8
YUI.add('lp.testing.serverfixture', function(Y) {
 
9
 
 
10
var module = Y.namespace('lp.testing.serverfixture');
 
11
 
 
12
/*
 
13
 * This function calls fixture on the appserver side.
 
14
 */
 
15
module.setup = function(testcase) {
 
16
    // self-post, get data, stash/merge on testcase
 
17
    var fixtures = Y.Array(arguments, 1);
 
18
    var data = Y.QueryString.stringify(
 
19
        {action: 'setup',
 
20
         fixtures: fixtures.join(',')
 
21
        })
 
22
    var config = {
 
23
        method: "POST",
 
24
        data: data,
 
25
        sync: true,
 
26
        headers: {Accept: 'application/json'}
 
27
        };
 
28
    var response = Y.io(window.location, config);
 
29
    if (response.status !== 200) {
 
30
        Y.error(response.responseText);
 
31
    }
 
32
    var data = Y.JSON.parse(response.responseText);
 
33
    if (!Y.Lang.isValue(testcase._lp_fixture_setups)) {
 
34
        testcase._lp_fixture_setups = [];
 
35
    }
 
36
    testcase._lp_fixture_setups = testcase._lp_fixture_setups.concat(
 
37
        fixtures);
 
38
    if (!Y.Lang.isValue(testcase._lp_fixture_data)) {
 
39
        testcase._lp_fixture_data = {};
 
40
    }
 
41
    testcase._lp_fixture_data = Y.merge(testcase._lp_fixture_data, data);
 
42
    return data;
 
43
};
 
44
 
 
45
module.teardown = function(testcase) {
 
46
    var fixtures = testcase._lp_fixture_setups;
 
47
    var data = Y.QueryString.stringify(
 
48
        {action: 'teardown',
 
49
         fixtures: fixtures.join(','),
 
50
         data: Y.JSON.stringify(testcase._lp_fixture_data)
 
51
        })
 
52
    var config = {
 
53
        method: "POST",
 
54
        data: data,
 
55
        sync: true
 
56
        };
 
57
    var response = Y.io(window.location, config);
 
58
    if (response.status !== 200) {
 
59
        Y.error(response.responseText);
 
60
    }
 
61
    delete testcase._lp_fixture_setups;
 
62
    delete testcase._lp_fixture_data;
 
63
};
 
64
 
 
65
  }, "0.1", {"requires": ["io", "json", "querystring"]});