~gary/juju-gui/hideInspectorOnRelationClick

« back to all changes in this revision

Viewing changes to test/test_env.js

Merged trunk, resolved conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"use strict";
1
2
 
2
3
// from nodejs runner
3
4
// YUI = require("yui").YUI,
5
6
 
6
7
 
7
8
(function () {
8
 
    
 
9
 
9
10
var Y;
10
11
var SocketStub = function () {
11
12
    this.messages = [];
12
13
 
13
14
    this.close = function() {
14
 
        console.log('close stub');
15
 
        this.messages = []
 
15
        console.log('close stub');
 
16
        this.messages = [];
16
17
    };
17
18
 
18
19
    this.transient_close = function() {
19
 
        this.onclose();
 
20
        this.onclose();
20
21
    };
21
22
 
22
23
    this.open = function() {
23
 
        this.onopen();
 
24
        this.onopen();
24
25
    };
25
26
 
26
27
    this.msg = function(m) {
27
 
        console.log("serializing env msg", m);
28
 
        this.onmessage({'data': Y.JSON.stringify(m)});
 
28
        console.log("serializing env msg", m);
 
29
        this.onmessage({'data': Y.JSON.stringify(m)});
29
30
    };
30
31
 
31
32
    this.last_message = function(m) {
32
 
        return this.messages[this.messages.length-1];
 
33
        return this.messages[this.messages.length-1];
33
34
    };
34
35
 
35
36
    this.send = function(m) {
36
 
        console.log('socket send', m);
37
 
        this.messages.push(Y.JSON.parse(m));
 
37
        console.log('socket send', m);
 
38
        this.messages.push(Y.JSON.parse(m));
38
39
    };
39
40
 
40
41
    this.onclose = function() {};
42
43
    this.onopen = function() {};
43
44
 
44
45
};
45
 
    
 
46
 
46
47
describe("Juju environment", function() {
47
48
    var juju, conn, env, msg;
48
49
 
49
50
    before(function (done) {
50
 
        Y = YUI(GlobalConfig).use(
51
 
            "base", "node", "json-parse", "juju-env",
52
 
            function (Y) {
53
 
                conn = new SocketStub();
54
 
                juju = Y.namespace("juju");
55
 
                env = new juju.Environment({conn: conn});
56
 
                env.connect();
57
 
                conn.open();
58
 
                done();
59
 
            });
60
 
    })
61
 
  
 
51
        Y = YUI(GlobalConfig).use(
 
52
            "base", "node", "json-parse", "juju-env",
 
53
            function (Y) {
 
54
                conn = new SocketStub();
 
55
                juju = Y.namespace("juju");
 
56
                env = new juju.Environment({conn: conn});
 
57
                env.connect();
 
58
                conn.open();
 
59
                done();
 
60
            });
 
61
    });
 
62
 
62
63
    after(function(done)  {
63
 
        env.destroy();
64
 
        done();
 
64
        env.destroy();
 
65
        done();
65
66
    });
66
67
 
67
68
    it("can deploy a service", function(done) {
68
 
        env.deploy('precise/mysql');
69
 
        msg = conn.last_message();
70
 
        msg.op.should.equal('deploy');
71
 
        msg.charm_url.should.equal('precise/mysql');
72
 
        done();
 
69
        env.deploy('precise/mysql');
 
70
        msg = conn.last_message();
 
71
        msg.op.should.equal('deploy');
 
72
        msg.charm_url.should.equal('precise/mysql');
 
73
        done();
73
74
    });
74
75
 
75
76
    it("can add a unit", function(done) {
76
 
        env.add_unit('mysql', 3);
77
 
        msg = conn.last_message();
78
 
        msg.op.should.equal('add_unit');
79
 
        msg.service_name.should.equal('mysql');
80
 
        msg.num_units.should.equal(3);
81
 
        done();
 
77
        env.add_unit('mysql', 3);
 
78
        msg = conn.last_message();
 
79
        msg.op.should.equal('add_unit');
 
80
        msg.service_name.should.equal('mysql');
 
81
        msg.num_units.should.equal(3);
 
82
        done();
82
83
    });
83
84
 
84
85
    it("can accept a callback on its methods", function(done) {
85
 
        env.get_charm('cs:precise/mysql', function(result) {
86
 
            console.log('invoked', result);
87
 
            result.op.should.equal('get_charm')
88
 
            result.result.id.should.equal('cs:precise/mysql');
89
 
            done();
90
 
        });
 
86
        env.get_charm('cs:precise/mysql', function(result) {
 
87
            console.log('invoked', result);
 
88
            result.op.should.equal('get_charm');
 
89
            result.result.id.should.equal('cs:precise/mysql');
 
90
            done();
 
91
        });
91
92
 
92
 
        msg = conn.last_message()
93
 
        console.log('msg', msg);
94
 
        conn.msg({
95
 
            'op': 'get_charm',
96
 
            'request_id': msg.request_id,
97
 
            'result': {'id': 'cs:precise/mysql'}});
 
93
        msg = conn.last_message();
 
94
        console.log('msg', msg);
 
95
        conn.msg({
 
96
            'op': 'get_charm',
 
97
            'request_id': msg.request_id,
 
98
            'result': {'id': 'cs:precise/mysql'}});
98
99
    });
99
100
 
100
 
})
 
101
});
101
102
})();