Browse Source

page title service tests

Rafał Pitoń 9 years ago
parent
commit
2caaa2f590

+ 3 - 3
misago/frontend/misago/services/title.js

@@ -2,7 +2,7 @@
   'use strict';
 
   Misago.addService('page-title', function(_) {
-    _._setTitle = function(title) {
+    var setPageTitle = function(_, title) {
       if (typeof title === 'string') {
         title = {title: title};
       }
@@ -17,12 +17,12 @@
         completeTitle += ' | ' + title.parent;
       }
 
-      document.title = completeTitle + ' | ' + this.settings.forum_name;
+      document.title = completeTitle + ' | ' + _.settings.forum_name;
     };
 
     _.setTitle = function(title) {
       if (title) {
-        this._setTitle(title);
+        setPageTitle(this, title);
       } else {
         document.title = this.settings.forum_name;
       }

+ 6 - 3
misago/frontend/test/tests/unit/ordered-list.js

@@ -23,6 +23,7 @@
     list.add('apple', 'apple');
     list.add('banana', 'banana');
     list.add('orange', 'orange');
+    list.add('lichi', 'lichi', {before: '_end'});
     list.add('kiwi', 'kiwi', {before: 'banana'});
     list.add('melon', 'melon', {after: 'potato'});
     list.add('potato', 'potato');
@@ -34,9 +35,10 @@
     assert.equal(unorderedList[0], 'apple', 'unorderedList[0] is apple');
     assert.equal(unorderedList[1], 'banana', 'unorderedList[1] is banana');
     assert.equal(unorderedList[2], 'orange', 'unorderedList[2] is orange');
-    assert.equal(unorderedList[3], 'kiwi', 'unorderedList[3] is kiwi');
-    assert.equal(unorderedList[4], 'melon', 'unorderedList[4] is melon');
-    assert.equal(unorderedList[5], 'potato', 'unorderedList[5] is potato');
+    assert.equal(unorderedList[3], 'lichi', 'unorderedList[3] is lichi');
+    assert.equal(unorderedList[4], 'kiwi', 'unorderedList[4] is kiwi');
+    assert.equal(unorderedList[5], 'melon', 'unorderedList[5] is melon');
+    assert.equal(unorderedList[6], 'potato', 'unorderedList[6] is potato');
 
     var orderedList = list.order();
 
@@ -48,5 +50,6 @@
     assert.equal(orderedList[3], 'orange', 'orderedList[3] is orange');
     assert.equal(orderedList[4], 'potato', 'orderedList[4] is potato');
     assert.equal(orderedList[5], 'melon', 'orderedList[5] is melon');
+    assert.equal(orderedList[6], 'lichi', 'orderedList[6] is lichi');
   });
 }(Misago.prototype));

+ 2 - 2
misago/frontend/test/tests/unit/router.js

@@ -1,4 +1,4 @@
-(function (Misago) {
+(function () {
   'use strict';
 
   QUnit.module("Router");
@@ -55,4 +55,4 @@
     assert.equal(router.staticUrl('logo.png'), '/static/logo.png', 'staticUrl correctly prefixed url to static asset.');
     assert.equal(router.mediaUrl('avatar_1.png'), 'http://nocookie.somewhere.com/avatar_1.png', 'mediaUrl correctly prefixed url to media asset.');
   });
-}(Misago.prototype));
+}());

+ 69 - 0
misago/frontend/test/tests/unit/title.js

@@ -0,0 +1,69 @@
+(function () {
+  'use strict';
+
+  var orgTitle = document.title;
+
+  QUnit.module("Page Title", {
+    beforeEach: function() {
+      orgTitle = document.title;
+    },
+    afterEach: function() {
+      document.title = orgTitle;
+    }
+  });
+
+  QUnit.test("service sets setTitle method on container", function(assert) {
+    var service = getMisagoService('page-title');
+
+    var container = {};
+    service(container);
+
+    assert.ok(container.setTitle, 'setTitle is set on container');
+  });
+
+  QUnit.test("setTitle() call with no arguments sets title to forum name", function(assert) {
+    var service = getMisagoService('page-title');
+
+    var container = {settings: {forum_name: 'Lorem Ipsum'}};
+    service(container);
+
+    container.setTitle();
+    assert.equal(document.title, 'Lorem Ipsum', 'no argument call for setTitle changed title to Lorem Ipsum');
+  });
+
+  QUnit.test("setTitle() call with string argument sets valid title", function(assert) {
+    var service = getMisagoService('page-title');
+
+    var container = {settings: {forum_name: 'Lorem Ipsum'}};
+    service(container);
+
+    container.setTitle("Hello!");
+    assert.equal(document.title, 'Hello! | Lorem Ipsum', 'string argument changed title');
+  });
+
+  QUnit.test("setTitle() call with object argument sets valid title", function(assert) {
+    var service = getMisagoService('page-title');
+
+    var container = {settings: {forum_name: 'Lorem Ipsum'}};
+    service(container);
+
+    container.setTitle({title: "Hello!"});
+    assert.equal(document.title, 'Hello! | Lorem Ipsum', 'object argument changed title');
+
+    container.setTitle({title: "User", page: 1});
+    assert.equal(document.title, 'User | Lorem Ipsum', 'object argument with first page changed title');
+
+    container.setTitle({title: "User", page: 5});
+    assert.equal(document.title, 'User (page 5) | Lorem Ipsum', 'object argument with page changed title');
+
+    container.setTitle({title: "User", parent: 'Admins'});
+    assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent changed title');
+
+    container.setTitle({title: "User", parent: 'Admins', page: 1});
+    assert.equal(document.title, 'User | Admins | Lorem Ipsum', 'object argument with parent and first page changed title');
+
+    container.setTitle({title: "User", parent: 'Admins', page: 5});
+    assert.equal(document.title, 'User (page 5) | Admins | Lorem Ipsum', 'object argument with parent and page changed title');
+
+  });
+}());