~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/app/javascript/lazr/testing/mockio.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.add('lazr.testing.mockio', function(Y) {
 
4
/**
 
5
 * A utility module for use in YUI unit-tests with a helper for mocking Y.io.
 
6
 *
 
7
 * @module lazr.testing
 
8
 */
 
9
var MockIo = function() {
 
10
    this.uri = null;
 
11
    this.cfg = null;
 
12
};
 
13
 
 
14
/* Save the Y.io() arguments. */
 
15
MockIo.prototype.io = function(uri, cfg) {
 
16
    this.uri = uri;
 
17
    this.cfg = cfg;
 
18
    return this;  // Usually this isn't used, except for logging.
 
19
};
 
20
 
 
21
/* Simulate the Xhr request/response cycle. */
 
22
MockIo.prototype.simulateXhr = function(response, is_failure) {
 
23
    var cfg = this.cfg;
 
24
    var context = cfg.context || this;
 
25
    var args = cfg.arguments;
 
26
    var tId = 'mockTId';
 
27
    if (!response) {
 
28
        response = {};
 
29
    }
 
30
 
 
31
    // See the Y.io utility documentation for the signatures.
 
32
    if (cfg.on.start) {
 
33
        cfg.on.start.call(context, tId, args);
 
34
    }
 
35
    if (cfg.on.complete) {
 
36
        cfg.on.complete.call(context, tId, response, args);
 
37
    }
 
38
    if (cfg.on.success && !is_failure) {
 
39
        cfg.on.success.call(context, tId, response, args);
 
40
    }
 
41
    if (cfg.on.failure && is_failure) {
 
42
        cfg.on.failure.call(context, tId, response, args);
 
43
    }
 
44
};
 
45
 
 
46
/* Make a successful XHR response object. */
 
47
MockIo.makeXhrSuccessResponse = function(responseText) {
 
48
    var text = responseText || "";
 
49
    return {
 
50
        status: 200,
 
51
        statusText: "OK",
 
52
        responseText: text
 
53
    };
 
54
};
 
55
 
 
56
/* Make a failed XHR response object. */
 
57
MockIo.makeXhrFailureResponse = function(responseText) {
 
58
    var text = responseText || "";
 
59
    return {
 
60
        status: 500,
 
61
        statusText: "Internal Server Error",
 
62
        responseText: text
 
63
    };
 
64
};
 
65
 
 
66
Y.namespace("lazr.testing");
 
67
Y.lazr.testing.MockIo = MockIo;
 
68
 
 
69
}, '0.1', {});