Merge pull request #205 from hashicorp/ui-testing

Initial UI tests
This commit is contained in:
Jack Pearkes 2014-06-10 13:37:07 -07:00
commit 4755c73359
1 changed files with 90 additions and 8 deletions

View File

@ -5,11 +5,39 @@ App.rootElement = '#ember-testing';
App.setupForTesting();
App.injectTestHelpers();
// common QUnit module declaration
// Test "fixtures". We populate these based on the running consul
// on the machine where you run the tests.
var fixtures = {
dc: "dc1",
node: null,
service: null,
key: "fake",
value: "foobar"
}
module("Integration tests", {
setup: function() {
// before each test, ensure the application is ready to run.
Ember.run(App, App.advanceReadiness);
// Discover the service, node and dc info
Ember.$.getJSON('/v1/catalog/datacenters').then(function(data) {
fixtures.dc = data[0]
}).then(function(){
Ember.$.getJSON('/v1/internal/ui/nodes?dc=' + fixtures.dc).then(function(data) {
fixtures.node = data[0].Node
});
}).then(function(){
Ember.$.getJSON('/v1/internal/ui/services?dc=' + fixtures.dc).then(function(data) {
fixtures.service = data[0].Name
});
});
// Create a fake key
Ember.$.ajax({
url: ("/v1/kv/" + fixtures.key + '?dc=' + fixtures.dc),
type: 'PUT',
data: fixtures.value
})
},
teardown: function() {
@ -18,14 +46,68 @@ module("Integration tests", {
}
});
// QUnit test case
test("/", function() {
// async helper telling the application to go to the '/' route
visit("/");
test("services", function() {
visit("/")
// helper waiting the application is idle before running the callback
andThen(function() {
equal(find("h1").text(), "Base", "Application header is rendered");
equal(find("li").length, 3, "There are three items in the list");
ok(find("a:contains('Services')").hasClass('active'), "highlights services in nav");
equal(find(".ember-list-item-view").length, 1, "renders one service");
ok(find(".ember-list-item-view .name:contains('"+ fixtures.service +"')"), "uses service name");
ok(find(".ember-list-item-view .name:contains('passing')"), "shows passing check num");
});
});
test("servicesShow", function() {
visit("/");
// First item in list
click('.ember-list-item-view .list-group-item');
andThen(function() {
ok(find("a:contains('Services')").hasClass('active'), "highlights services in nav");
equal(find(".ember-list-item-view").length, 1, "renders one service");
ok(find(".ember-list-item-view .list-group-item").hasClass('active'), "highlights active service");
ok(find(".ember-list-item-view .name:contains('"+ fixtures.service +"')"), "uses service name");
ok(find(".ember-list-item-view .name:contains('passing')"), "shows passing check num");
ok(find("h3:contains('"+ fixtures.service+"')"), "shows service name");
equal(find("h5").text(), "Nodes", "shows node list");
ok(find("h3.panel-title:contains('"+ fixtures.node +"')"), "shows node name");
});
});
test("nodes", function() {
visit("/");
click("a:contains('Nodes')");
andThen(function() {
ok(find("a:contains('Nodes')").hasClass('active'), "highlights nodes in nav");
equal(find(".ember-list-item-view").length, 1, "renders one node");
ok(find(".ember-list-item-view .name:contains('"+ fixtures.node +"')"), "contains node name");
ok(find(".ember-list-item-view .name:contains('services')"), "contains services num");
});
});
test("nodesShow", function() {
visit("/");
click("a:contains('Nodes')");
// First item in list
click('.ember-list-item-view .list-group-item');
andThen(function() {
ok(find("a:contains('Nodes')").hasClass('active'), "highlights services in nav");
equal(find(".ember-list-item-view").length, 1, "renders one service");
ok(find(".ember-list-item-view .list-group-item").hasClass('active'), "highlights active node");
ok(find(".ember-list-item-view .name:contains('"+ fixtures.node +"')"), "uses node name");
ok(find(".ember-list-item-view .name:contains('passing')"), "shows passing check num");
});
});
test("kv", function() {
visit("/");
click("a:contains('Key/Value')");
andThen(function() {
ok(find("a:contains('Key/Value')").hasClass('active'), "highlights kv in nav");
equal(find(".list-group-item").length, 1, "renders one key");
ok(find(".list-group-item:contains('"+ fixtures.key +"')"), "contains key name");
});
});