~teknico/juju-gui/1169511-use-nsrouter-in-navigateTo

« back to all changes in this revision

Viewing changes to test/utils.js

  • Committer: Nicola Larosa
  • Date: 2013-04-17 09:39:47 UTC
  • mfrom: (557.2.8 juju-gui)
  • Revision ID: nicola.larosa@canonical.com-20130417093947-gs28a31f2ci4xcod
MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
      };
60
60
    },
61
61
 
62
 
    makeCharmStore: function() {
63
 
      var data = [];
 
62
    _cached_charms: (function() {
 
63
      var charms = {},
 
64
          names = [
 
65
            'wordpress', 'mysql', 'puppet', 'haproxy', 'mediawiki', 'hadoop'];
 
66
      Y.Array.each(names, function(name) {
 
67
        charms[name] = Y.JSON.parse(
 
68
            Y.io('data/' + name + '-charmdata.json', {sync: true})
 
69
            .responseText);
 
70
      });
 
71
      return charms;
 
72
    })(),
64
73
 
65
 
      // In order to return multiple charms from the fake store we need to
66
 
      // monkeypatch this method.
67
 
      var TestCharmStore = Y.Base.create('test-charm-store',
68
 
          Y.juju.CharmStore, [], {
69
 
            loadByPath: function(path, options) {
70
 
              this.get('datasource').sendRequest({
71
 
                request: path,
72
 
                callback: {
73
 
                  success: function(io_request) {
74
 
                    var charmName = path.split('/')[2];
75
 
                    Y.Array.some(io_request.response.results, function(result) {
76
 
                      var data = Y.JSON.parse(result.responseText);
77
 
                      if (data.name === charmName) {
78
 
                        options.success(data);
79
 
                        return true;
80
 
                      }
81
 
                    });
82
 
                  },
83
 
                  failure: options.failure
84
 
                }
85
 
              });
 
74
    TestCharmStore: Y.Base.create(
 
75
        'test-charm-store', Y.juju.CharmStore, [], {
 
76
          loadByPath: function(path, options) {
 
77
            var charmName = path.split('/')[2];
 
78
            var found = Y.Array.some(
 
79
                Y.Object.values(jujuTests.utils._cached_charms),
 
80
                function(data) {
 
81
                  if (data.name === charmName) {
 
82
                    options.success(data);
 
83
                    return true;
 
84
                  }
 
85
                });
 
86
            if (!found) {
 
87
              options.failure();
86
88
            }
87
 
          });
88
 
 
89
 
      var charmStore = new TestCharmStore(
90
 
          {datasource: new Y.DataSource.Local({source: data})});
91
 
      var setCharms = function(names) {
92
 
        Y.Array.each(names, function(name) {
93
 
          data.push(Y.io('data/' + name + '-charmdata.json', {sync: true}));
94
 
        });
95
 
      };
96
 
      setCharms(['wordpress', 'mysql', 'puppet', 'haproxy', 'mediawiki',
97
 
        'hadoop']);
98
 
      return {charmStore: charmStore, setCharm: setCharms};
99
 
    },
 
89
          }
 
90
        }
 
91
    ),
100
92
 
101
93
    makeFakeBackendWithCharmStore: function() {
102
 
      var charmStoreData = jujuTests.utils.makeCharmStore();
103
94
      var fakebackend = new Y.juju.environments.FakeBackend(
104
 
          {charmStore: charmStoreData.charmStore});
 
95
          {charmStore: new jujuTests.utils.TestCharmStore()});
105
96
      fakebackend.login('admin', 'password');
106
 
      return {fakebackend: fakebackend, setCharm: charmStoreData.setCharm};
 
97
      return fakebackend;
107
98
    }
108
99
 
109
100
  };