diff options
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.js | 213 |
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 ) ); |