瀏覽代碼

Add tests for account registration.

JC Brand 10 年之前
父節點
當前提交
702cddd89b
共有 2 個文件被更改,包括 103 次插入3 次删除
  1. 101 0
      spec/register.js
  2. 2 3
      tests/main.js

+ 101 - 0
spec/register.js

@@ -0,0 +1,101 @@
+(function (root, factory) {
+    define([
+        "jquery",
+        "mock",
+        "test_utils"
+        ], function ($, mock, test_utils) {
+            return factory($, mock, test_utils);
+        }
+    );
+} (this, function ($, mock, test_utils) {
+
+    describe("The Registration Panel", $.proxy(function (mock, test_utils) {
+        beforeEach(function () {
+            test_utils.openControlBox();
+        });
+
+        afterEach(function () {
+            test_utils.closeControlBox();
+        });
+
+        it("is not available unless allow_registration=true",  $.proxy(function () {
+            test_utils.closeControlBox();
+            var connection = mock.mock_connection;
+            connection.connected = false;
+            converse._tearDown();
+            converse.initialize({
+                animate: false,
+                auto_subscribe: false,
+                bosh_service_url: 'localhost',
+                connection: connection,
+                no_trimming: true,
+                allow_registration: false,
+                debug: true
+            });
+            test_utils.openControlBox();
+            var cbview = this.chatboxviews.get('controlbox');
+            expect(cbview.$('#controlbox-tabs li').length).toBe(1);
+            expect(cbview.$('#controlbox-tabs li').text().trim()).toBe("Sign in");
+            connection = mock.mock_connection;
+            connection.connected = false;
+            converse._tearDown();
+            converse.initialize({
+                bosh_service_url: 'localhost',
+                allow_registration: true,
+                auto_subscribe: false,
+                animate: false,
+                connection: connection,
+                no_trimming: true,
+                debug: true
+            });
+            test_utils.openControlBox();
+            cbview = this.chatboxviews.get('controlbox');
+            expect(cbview.$el.find('#controlbox-tabs li').length).toBe(2);
+            expect(cbview.$('#controlbox-tabs li').first().text().trim()).toBe("Sign in");
+            expect(cbview.$('#controlbox-tabs li').last().text().trim()).toBe("Register");
+        }, converse));
+
+        it("can be opened by clicking on the registration tab", $.proxy(function () {
+            var cbview = this.chatboxviews.get('controlbox');
+            var $tabs = cbview.$('#controlbox-tabs');
+            var $panels = cbview.$('.controlbox-panes');
+            var $login = $panels.children().first();
+            var $registration = $panels.children().last();
+            spyOn(cbview, 'switchTab').andCallThrough();
+            cbview.delegateEvents(); // We need to rebind all events otherwise our spy won't be called
+            $tabs.find('li').last().find('a').click(); // Click the Register tab
+            expect($login.is(':visible')).toBe(false);
+            expect($registration.is(':visible')).toBe(true);
+            expect(cbview.switchTab).toHaveBeenCalled();
+        }, converse));
+
+        it("allows the user to choose an XMPP provider's domain", $.proxy(function () {
+            var cbview = this.chatboxviews.get('controlbox');
+            var registerview = cbview.registerpanel;
+            spyOn(registerview, 'onProviderChosen').andCallThrough();
+            registerview.delegateEvents();  // We need to rebind all events otherwise our spy won't be called
+            spyOn(this.connection, 'connect');
+            var $tabs = cbview.$('#controlbox-tabs');
+            $tabs.find('li').last().find('a').click(); // Click the Register tab
+            // Check the form layout
+            var $form = cbview.$('#converse-register');
+            expect($form.find('input').length).toEqual(2);
+            expect($form.find('input').first().attr('name')).toEqual('domain');
+            expect($form.find('input').last().attr('type')).toEqual('submit');
+            // Check that the input[type=domain] input is required
+            $form.find('input[type=submit]').click();
+            expect(registerview.onProviderChosen).toHaveBeenCalled();
+            expect($form.find('input[name=domain]').hasClass('error')).toBeTruthy();
+            // Check that the form is accepted if input[type=domain] has a value
+            $form.find('input[name=domain]').val('conversejs.org');
+            $form.find('input[type=submit]').click();
+            expect(registerview.onProviderChosen).toHaveBeenCalled();
+            expect(this.connection.connect).toHaveBeenCalled();
+        }, converse));
+
+        it("will render a registration form as received from the XMPP provider", $.proxy(function () {
+            // TODO
+        }, converse));
+
+    }, converse, mock, test_utils));
+}));

+ 2 - 3
tests/main.js

@@ -42,8 +42,6 @@ require([
         window.sessionStorage.clear();
 
         converse.initialize({
-            prebind: false,
-            xhr_user_search: false,
             auto_subscribe: false,
             animate: false,
             connection: mock.mock_connection,
@@ -68,7 +66,8 @@ require([
                 "spec/chatbox",
                 "spec/chatroom",
                 "spec/minchats",
-                "spec/profiling"
+                "spec/profiling",
+                "spec/register"
             ], function () {
                 // Make sure this callback is only called once.
                 delete converse.callback;