summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js213
1 files changed, 213 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js b/www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js
new file mode 100644
index 00000000..ce0f74bd
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/tests/qunit/smw/query/ext.smw.query.test.js
@@ -0,0 +1,213 @@
+/**
+ * This file is part of the Semantic MediaWiki QUnit test suite
+ * @see https://semantic-mediawiki.org/
+ *
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ * @since 1.9
+ *
+ * @file
+ * @ignore
+ *
+ * @ingroup SMW
+ * @ingroup Test
+ *
+ * @licence GNU GPL v2+
+ * @author mwjames
+ */
+
+/**
+ * Tests methods provided by ext.smw.query.js
+ * @ignore
+ */
+( function ( $, mw, smw ) {
+ 'use strict';
+
+ QUnit.module( 'ext.smw.Query', QUnit.newMwEnvironment() );
+ var jsonString = '{\"conditions\":\"[[Modification date::+]]\",\"parameters\":{\"limit\":10,\"offset\":0,\"link\":\"all\",\"headers\":\"show\",\"mainlabel\":\"\",\"intro\":\"\",\"outro\":\"\",\"searchlabel\":\"\\u2026 further results\",\"default\":\"\",\"class\":\"\"},\"printouts\":[\"?Modification date\"]}';
+
+ var pass = 'Passes because ';
+
+ /**
+ * Test accessibility
+ *
+ * @since: 1.9
+ * @ignore
+ */
+ QUnit.test( 'instance', function ( assert ) {
+ assert.expect( 2 );
+
+ var result;
+
+ result = new smw.api();
+ assert.ok( result instanceof Object, pass + 'the api instance was accessible' );
+
+ result = new smw.query();
+ assert.ok( result instanceof Object, pass + 'the api.query instance was accessible' );
+
+ } );
+
+ /**
+ * Test toString sanity
+ *
+ * @since: 1.9
+ * @ignore
+ */
+ QUnit.test( 'toString sanity test', function ( assert ) {
+ assert.expect( 11 );
+
+ var result;
+
+ assert.throws( function() {
+ new smw.query( '', '' ,'' ).toString();
+ }, pass + 'an error was raised due to missing conditions' );
+
+ assert.throws( function() {
+ new smw.query( [], {} ,'' ).toString();
+ }, pass + 'an error was raised due to missing conditions' );
+
+ assert.throws( function() {
+ new smw.query( [], [] , '[[Modification date::+]]' ).toString();
+ }, pass + 'an error was raised due to parameters being a non object' );
+
+ assert.throws( function() {
+ new smw.query( '', [] , '[[Modification date::+]]' ).toString();
+ }, pass + 'an error was raised due to parameters being a non object' );
+
+ assert.throws( function() {
+ new smw.query( '?Modification date', {'limit' : 10, 'offset': 0 } , '[[Modification date::+]]' ).toString();
+ }, pass + 'an error was raised due to printouts weren\'t empty at first, contained values but those weren\'t of type array' );
+
+ assert.throws( function() {
+ new smw.query( ['?Modification date'], ['limit'], '[[Modification date::+]]' ).toString();
+ }, pass + 'an error was raised due to parameters weren\'t empty at first, contained values but those weren\'t of type object' );
+
+ result = new smw.query( '', '' , ['[[Modification date::+]]'] ).toString();
+ assert.equal( result, '[[Modification date::+]]', pass + '.toString() returned a string' );
+
+ result = new smw.query( [], {} , ['[[Modification date::+]]'] ).toString();
+ assert.equal( result, '[[Modification date::+]]', pass + '.toString() returned a string' );
+
+ result = new smw.query(
+ '',
+ {'limit' : 10, 'offset': 0 } ,
+ '[[Modification date::+]]'
+ ).toString();
+ assert.equal( result, '[[Modification date::+]]|limit=10|offset=0', pass + '(printouts = empty, parameters = object, conditions = array).toString() returned a string,' );
+
+ result = new smw.query(
+ ['?Modification date'],
+ {'limit' : 10, 'offset': 0 } ,
+ '[[Modification date::+]]'
+ ).toString();
+ assert.equal( result, '[[Modification date::+]]|?Modification date|limit=10|offset=0', pass + '(printouts = array, parameters = object, conditions = array).toString() returned a string,' );
+
+ result = new smw.query(
+ ['?Modification date'],
+ {'limit' : 10, 'offset': 0 } ,
+ { foo: '[[Modification date::+]]', bar: '[[Modification date::>2013-04-01]]' }
+ ).toString();
+ assert.equal( result, '[[Modification date::+]][[Modification date::>2013-04-01]]|?Modification date|limit=10|offset=0', pass + '(printouts = array, parameters = object, conditions = object).toString() returned a string,' );
+
+ } );
+
+ /**
+ * Test toString
+ *
+ * @since: 1.9
+ * @ignore
+ */
+ QUnit.test( 'toString Ajax response test', function ( assert ) {
+ assert.expect( 4 );
+
+ var done = assert.async();
+
+ var smwApi = new smw.api();
+ var queryObject = smwApi.parse( jsonString );
+
+ var query = new smw.query ( queryObject.printouts, queryObject.parameters, queryObject.conditions );
+
+ assert.ok( $.type( query.toString() ) === 'string', pass + 'the query is a string' );
+ assert.ok( $.type( query.getQueryString() ) === 'string', pass + 'the function alias returned a string' );
+
+ // Ajax
+ smwApi.fetch( query.toString() )
+ .done( function ( results ) {
+
+ assert.ok( true, pass + 'the query returned with a positive server response' );
+ assert.ok( results instanceof Object, pass + 'the query returned with a result object' );
+
+ done();
+ } );
+
+ } );
+
+ /**
+ * Test getLimit
+ *
+ * @since: 1.9
+ * @ignore
+ */
+ QUnit.test( 'getLimit', function ( assert ) {
+ assert.expect( 1 );
+
+ var smwApi = new smw.api();
+ var queryObject = smwApi.parse( jsonString );
+
+ var query = new smw.query ( queryObject.printouts, queryObject.parameters, queryObject.conditions );
+ assert.equal( query.getLimit(), 10, pass + 'the query limit parameter returned 10' );
+
+ } );
+
+
+ /**
+ * Test getLink
+ *
+ * @since: 1.9
+ * @ignore
+ */
+ QUnit.test( 'getLink', function ( assert ) {
+ assert.expect( 5 );
+
+ var result, context;
+
+ var smwApi = new smw.api();
+ var queryObject = smwApi.parse( jsonString );
+
+ result = new smw.query ( queryObject.printouts, queryObject.parameters, queryObject.conditions ).getLink();
+ assert.equal( $.type( result ), 'string', pass + 'the query link returned was a string' );
+
+ // DOM test
+ context = $( '<div></div>', '#qunit-fixture' );
+ context.append( result );
+ assert.equal( context.find( 'a' ).attr( 'class' ), 'query-link', pass + 'DOM object returned class attribute "query-link"' );
+ assert.ok( context.find( 'a' ).attr( 'href' ), pass + 'DOM object returned a href attribute' );
+
+ // Caption text test
+ context = $( '<div></div>', '#qunit-fixture' );
+ queryObject.parameters.searchlabel = 'test';
+ result = new smw.query ( queryObject.printouts, queryObject.parameters, queryObject.conditions ).getLink();
+ context.append( result );
+ assert.equal( context.find( 'a' ).text( ), 'test', pass + 'parameters.searchlabel is used to set the caption text' );
+
+ context = $( '<div></div>', '#qunit-fixture' );
+ result = new smw.query ( queryObject.printouts, queryObject.parameters, queryObject.conditions ).getLink( 'test 2' );
+ context.append( result );
+ assert.equal( context.find( 'a' ).text( ), 'test 2', pass + 'getLink() is used to set the caption text' );
+
+ } );
+
+}( jQuery, mediaWiki, semanticMediaWiki ) );