~bcsaller/juju-gui/update-reductions

« back to all changes in this revision

Viewing changes to test/test_app.js

  • Committer: Gary Poster
  • Date: 2012-09-21 06:05:22 UTC
  • mfrom: (105.1.3 closurelint)
  • Revision ID: gary.poster@canonical.com-20120921060522-u2h10i1avo7lqhws
use google closure linter for whitespace, tighten up other linter, and make broad changes to code to accommodate these changes.  Use `make prep` to beautify and lint your code, or `make` to beautify, lint, and test.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
'use strict';
2
2
 
3
3
function injectData(app, data) {
4
 
    var d = data || {'result': [['service', 'add', {'charm': 'cs:precise/wordpress-6', 'id': 'wordpress', 'exposed': false}], ['service', 'add', {'charm': 'cs:precise/mysql-6', 'id': 'mysql'}], ['relation', 'add', {'interface': 'reversenginx', 'scope': 'global', 'endpoints': [['wordpress', {'role': 'peer', 'name': 'loadbalancer'}]], 'id': 'relation-0000000000'}], ['relation', 'add', {'interface': 'mysql', 'scope': 'global', 'endpoints': [['mysql', {'role': 'server', 'name': 'db'}], ['wordpress', {'role': 'client', 'name': 'db'}]], 'id': 'relation-0000000001'}], ['machine', 'add', {'agent-state': 'running', 'instance-state': 'running', 'id': 0, 'instance-id': 'local', 'dns-name': 'localhost'}], ['unit', 'add', {'machine': 0, 'agent-state': 'started', 'public-address': '192.168.122.113', 'id': 'wordpress/0'}], ['unit', 'add', {'machine': 0, 'agent-state': 'started', 'public-address': '192.168.122.222', 'id': 'mysql/0'}]], 'op': 'delta'};
5
 
    app.env.dispatch_result(d);
6
 
    return app;
 
4
  var d = data || {
 
5
    'result': [
 
6
      ['service', 'add',
 
7
       {'charm': 'cs:precise/wordpress-6',
 
8
         'id': 'wordpress', 'exposed': false}],
 
9
      ['service', 'add', {'charm': 'cs:precise/mysql-6', 'id': 'mysql'}],
 
10
      ['relation', 'add',
 
11
       {'interface': 'reversenginx', 'scope': 'global',
 
12
         'endpoints': [['wordpress', {'role': 'peer', 'name': 'loadbalancer'}]],
 
13
         'id': 'relation-0000000000'}],
 
14
      ['relation', 'add',
 
15
       {'interface': 'mysql',
 
16
         'scope': 'global', 'endpoints':
 
17
         [['mysql', {'role': 'server', 'name': 'db'}],
 
18
           ['wordpress', {'role': 'client', 'name': 'db'}]],
 
19
         'id': 'relation-0000000001'}],
 
20
      ['machine', 'add',
 
21
       {'agent-state': 'running', 'instance-state': 'running',
 
22
         'id': 0, 'instance-id': 'local', 'dns-name': 'localhost'}],
 
23
               ['unit', 'add',
 
24
                {'machine': 0, 'agent-state': 'started',
 
25
          'public-address': '192.168.122.113', 'id': 'wordpress/0'}],
 
26
      ['unit', 'add',
 
27
       {'machine': 0, 'agent-state': 'started',
 
28
                  'public-address': '192.168.122.222', 'id': 'mysql/0'}]],
 
29
    'op': 'delta'};
 
30
  app.env.dispatch_result(d);
 
31
  return app;
7
32
}
8
33
 
9
34
describe('Application', function() {
10
35
  var Y, app, container;
11
36
 
12
37
  before(function(done) {
13
 
      Y = YUI(GlobalConfig).use('juju-gui', function (Y) {
 
38
    Y = YUI(GlobalConfig).use('juju-gui', function(Y) {
14
39
          container = Y.Node.create('<div id="test" class="container"></div>');
15
40
          app = new Y.juju.App({
16
41
                  container: container,
17
42
                  viewContainer: container
18
 
                  });
 
43
      });
19
44
          injectData(app);
20
45
          done();
21
46
        });
23
48
  });
24
49
 
25
50
  it('should produce a valid index', function() {
26
 
      var container = app.get('container');
27
 
      app.render();
28
 
      container.getAttribute('id').should.equal('test');
29
 
      container.getAttribute('class').should.include('container');
 
51
    var container = app.get('container');
 
52
    app.render();
 
53
    container.getAttribute('id').should.equal('test');
 
54
    container.getAttribute('class').should.include('container');
30
55
  });
31
56
 
32
57
  it('should be able to render the environment view with default data',
33
58
     function() {
34
59
       app.showView('environment', {db: app.db});
35
60
       container.one('svg').should.not.equal(null);
36
 
  });
 
61
     });
37
62
 
38
63
  it('should be able to route objects to internal URLs', function() {
39
 
      // take handles to database objects and ensure we can route to the view
40
 
      // needed to show them
41
 
      var wordpress = app.db.services.getById('wordpress'),
42
 
          wp0 = app.db.units.get_units_for_service(wordpress)[0],
43
 
          wp_charm = app.db.charms.create({charm_id: wordpress.get('charm')});
44
 
 
45
 
      // 'service/wordpress/' is the primary and so other URL are not returned
46
 
      app.getModelURL(wordpress).should.equal('/service/wordpress/');
47
 
      // however passing 'intent' can force selection of another
48
 
      app.getModelURL(wordpress, 'config').should.equal(
49
 
          '/service/wordpress/config');
50
 
 
51
 
      // service units use argument rewriting (thus not /u/wp/0)
52
 
      app.getModelURL(wp0).should.equal('/unit/wordpress-0/');
53
 
 
54
 
      // charms also require a mapping but only a name, not a function
55
 
      app.getModelURL(wp_charm).should.equal('/charms/' + wp_charm.get('name'));
 
64
    // take handles to database objects and ensure we can route to the view
 
65
    // needed to show them
 
66
    var wordpress = app.db.services.getById('wordpress'),
 
67
        wp0 = app.db.units.get_units_for_service(wordpress)[0],
 
68
        wp_charm = app.db.charms.create({charm_id: wordpress.get('charm')});
 
69
 
 
70
    // 'service/wordpress/' is the primary and so other URL are not returned
 
71
    app.getModelURL(wordpress).should.equal('/service/wordpress/');
 
72
    // however passing 'intent' can force selection of another
 
73
    app.getModelURL(wordpress, 'config').should.equal(
 
74
        '/service/wordpress/config');
 
75
 
 
76
    // service units use argument rewriting (thus not /u/wp/0)
 
77
    app.getModelURL(wp0).should.equal('/unit/wordpress-0/');
 
78
 
 
79
    // charms also require a mapping but only a name, not a function
 
80
    app.getModelURL(wp_charm).should.equal('/charms/' + wp_charm.get('name'));
56
81
 
57
82
  });
58
83