Current File : /home/jvzmxxx/wiki1/extensions/Echo/tests/qunit/model/test_mw.echo.dm.FiltersModel.js
( function ( mw, $ ) {
	var defaultValues = {
		getReadState: 'all'
	};

	QUnit.module( 'ext.echo.dm - mw.echo.dm.FiltersModel' );

	QUnit.test( 'Constructing the model', function ( assert ) {
		var i, model, method,
			cases = [
				{
					msg: 'Empty config',
					config: {},
					expected: defaultValues
				},
				{
					msg: 'Readstate: unread',
					config: {
						readState: 'unread'
					},
					expected: $.extend( true, {}, defaultValues, {
						getReadState: 'unread'
					} )
				},
				{
					msg: 'Readstate: read',
					config: {
						readState: 'read'
					},
					expected: $.extend( true, {}, defaultValues, {
						getReadState: 'read'
					} )
				}
			];

		for ( i = 0; i < cases.length; i++ ) {
			model = new mw.echo.dm.FiltersModel( cases[ i ].config );

			for ( method in cases[ i ].expected ) {
				assert.deepEqual(
					// Run the method
					model[ method ](),
					// Expected value
					cases[ i ].expected[ method ],
					// Message
					cases[ i ].msg + ' (' + method + ')'
				);
			}
		}
	} );

	QUnit.test( 'Changing filters', function ( assert ) {
		var model = new mw.echo.dm.FiltersModel();

		assert.equal(
			model.getReadState(),
			'all',
			'Initial value: all'
		);

		model.setReadState( 'unread' );
		assert.equal(
			model.getReadState(),
			'unread',
			'Changing state (unread)'
		);

		model.setReadState( 'read' );
		assert.equal(
			model.getReadState(),
			'read',
			'Changing state (read)'
		);

		model.setReadState( 'foo' );
		assert.equal(
			model.getReadState(),
			'read',
			'Ignoring invalid state (foo)'
		);
	} );

	QUnit.test( 'Emitting update event', function ( assert ) {
		var results = [],
			model = new mw.echo.dm.FiltersModel();

		// Listen to update event
		model.on( 'update', function () {
			results.push( model.getReadState() );
		} );

		// Trigger events
		model.setReadState( 'read' ); // [ 'read' ]
		model.setReadState( 'unread' ); // [ 'read', 'unread' ]
		model.setReadState( 'unread' ); // (no change, no event) [ 'read', 'unread' ]
		model.setReadState( 'all' ); // [ 'read', 'unread', 'all' ]
		model.setReadState( 'foo' ); // (invalid value, no event) [ 'read', 'unread', 'all' ]
		model.setReadState( 'unread' ); // [ 'read', 'unread', 'all', 'unread' ]

		assert.deepEqual(
			// Actual
			results,
			// Expected:
			[ 'read', 'unread', 'all', 'unread' ],
			// Message
			'Update events emitted'
		);
	} );

} )( mediaWiki, jQuery );