mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Previously, in narrow viewports, the "filter" option would disappear, which was very confusing. This commit moves the filter streams input to the next line, making it visible at all viewport widths. @showell modified the commit message and got Casper tests passing. Fixes #12898.
		
			
				
	
	
		
			199 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var common = require('../casper_lib/common.js');
 | 
						|
 | 
						|
function stream_checkbox(stream_name) {
 | 
						|
    const stream_id = common.get_stream_id(stream_name);
 | 
						|
    return '#stream-checkboxes [data-stream-id="' + stream_id + '"]';
 | 
						|
}
 | 
						|
 | 
						|
function stream_span(stream_name) {
 | 
						|
    return stream_checkbox(stream_name) + ' input ~ span';
 | 
						|
}
 | 
						|
 | 
						|
function user_checkbox(email) {
 | 
						|
    var user_id = common.get_user_id(email);
 | 
						|
    return '#user-checkboxes [data-user-id="' + user_id + '"]';
 | 
						|
}
 | 
						|
 | 
						|
function user_span(email) {
 | 
						|
    return user_checkbox(email) + ' input ~ span';
 | 
						|
}
 | 
						|
 | 
						|
function is_checked(email) {
 | 
						|
    var sel = user_checkbox(email);
 | 
						|
    return casper.evaluate(function (sel) {
 | 
						|
        return $(sel).find('input')[0].checked;
 | 
						|
    }, {
 | 
						|
        sel: sel,
 | 
						|
    });
 | 
						|
}
 | 
						|
 | 
						|
common.start_and_log_in();
 | 
						|
 | 
						|
casper.then(function () {
 | 
						|
    var menu_selector = '#settings-dropdown';
 | 
						|
 | 
						|
    casper.test.info('Streams page');
 | 
						|
 | 
						|
    casper.waitUntilVisible(menu_selector, function () {
 | 
						|
        casper.click(menu_selector);
 | 
						|
        casper.then(function () {
 | 
						|
            casper.click('a[href^="#streams"]');
 | 
						|
            casper.test.assertUrlMatch(
 | 
						|
                /^http:\/\/[^/]+\/#streams/,
 | 
						|
                'URL suggests we are on streams page');
 | 
						|
            casper.waitUntilVisible('#subscription_overlay.new-style', function () {
 | 
						|
                casper.test.assertExists('#subscription_overlay.new-style', 'Streams page is active');
 | 
						|
            });
 | 
						|
        });
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
casper.waitUntilVisible('.sub_unsub_button.checked', function () {
 | 
						|
    casper.test.assertExists('.sub_unsub_button.checked', 'Initial subscriptions loaded');
 | 
						|
    casper.click('#add_new_subscription .create_stream_button');
 | 
						|
});
 | 
						|
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.assertExists(user_checkbox('cordelia@zulip.com'), 'Original user list contains Cordelia');
 | 
						|
    casper.test.assertExists(user_checkbox('othello@zulip.com'), 'Original user list contains Othello');
 | 
						|
});
 | 
						|
 | 
						|
casper.waitUntilVisible("#copy-from-stream-expand-collapse", function () {
 | 
						|
    casper.click('#copy-from-stream-expand-collapse');
 | 
						|
});
 | 
						|
 | 
						|
casper.waitUntilVisible("#stream-checkboxes", function () {
 | 
						|
    casper.test.assertExists(stream_checkbox('Scotland'), 'Original stream list contains Scotland');
 | 
						|
    casper.test.assertExists(stream_checkbox('Rome'), 'Original stream list contains Rome');
 | 
						|
});
 | 
						|
 | 
						|
casper.waitUntilVisible("form#stream_creation_form", function () {
 | 
						|
    casper.test.info("Filtering with keyword 'ot'");
 | 
						|
    casper.fill('form#stream_creation_form', {user_list_filter: 'ot'});
 | 
						|
});
 | 
						|
casper.waitUntilVisible("#user-checkboxes", function () {
 | 
						|
    casper.test.assertEquals(casper.visible(user_checkbox('cordelia@zulip.com')),
 | 
						|
                             false,
 | 
						|
                             "Cordelia is not visible");
 | 
						|
    casper.test.assertEquals(casper.visible(user_checkbox('othello@zulip.com')),
 | 
						|
                             true,
 | 
						|
                             "Othello is visible");
 | 
						|
 | 
						|
    /* The filter should not impact streams */
 | 
						|
    casper.test.assertEquals(casper.visible(stream_checkbox('Scotland')),
 | 
						|
                             true,
 | 
						|
                             "Scotland is visible");
 | 
						|
    casper.test.assertEquals(casper.visible(stream_checkbox('Rome')),
 | 
						|
                             true,
 | 
						|
                             "Rome is visible");
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.info("Check Uncheck only visible users for new stream");
 | 
						|
    casper.click('.subs_set_all_users');
 | 
						|
    casper.wait(100, function () {
 | 
						|
        casper.test.assert(
 | 
						|
            !is_checked('cordelia@zulip.com'),
 | 
						|
            "Cordelia is unchecked");
 | 
						|
        casper.test.assert(
 | 
						|
            is_checked('othello@zulip.com'),
 | 
						|
            "Othello is checked");
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.info("Check Uncheck only visible users for new stream");
 | 
						|
    casper.click('.subs_unset_all_users');
 | 
						|
    casper.wait(100, function () {
 | 
						|
        casper.test.assert(
 | 
						|
            !is_checked('othello@zulip.com'),
 | 
						|
            "Othello is unchecked");
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.info("Clearing user filter search box");
 | 
						|
    casper.fill('form#stream_creation_form', {user_list_filter: ''});
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.assertEquals(casper.visible(user_checkbox('cordelia@zulip.com')),
 | 
						|
                             true,
 | 
						|
                             "Cordelia is visible again");
 | 
						|
    casper.test.assertEquals(casper.visible(user_checkbox('othello@zulip.com')),
 | 
						|
                             true,
 | 
						|
                             "Othello is visible again");
 | 
						|
    casper.test.assertEquals(casper.visible(stream_checkbox('Scotland')),
 | 
						|
                             true,
 | 
						|
                             "Scotland is visible again");
 | 
						|
    casper.test.assertEquals(casper.visible(stream_checkbox('Rome')),
 | 
						|
                             true,
 | 
						|
                             "Rome is visible again");
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.waitUntilVisible('#stream_creation_form', function () {
 | 
						|
        casper.test.assertTextExists('Create stream', 'New stream creation panel');
 | 
						|
        casper.fill('form#stream_creation_form', {stream_name: 'Waseemio', stream_description: 'Oimeesaw'});
 | 
						|
        casper.click(stream_span('Scotland'));
 | 
						|
        casper.click(user_span('cordelia@zulip.com'));
 | 
						|
        casper.click(user_span('othello@zulip.com'));
 | 
						|
        casper.click('form#stream_creation_form button.button.sea-green');
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
casper.then(function () {
 | 
						|
    casper.waitFor(function () {
 | 
						|
        return casper.evaluate(function () {
 | 
						|
            return $('.stream-name').is(':contains("Waseemio")');
 | 
						|
        });
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
casper.then(function () {
 | 
						|
    casper.test.info("User should be subscribed to stream Waseemio");
 | 
						|
    casper.test.assertSelectorHasText('.stream-name', 'Waseemio');
 | 
						|
    casper.test.assertSelectorHasText('.description', 'Oimeesaw');
 | 
						|
    // Based on the selected checkboxes while creating stream,
 | 
						|
    // 4 users from Scotland are added.
 | 
						|
    // 1 user, Cordelia, is added. Othello (subscribed to Scotland) is not added twice.
 | 
						|
    casper.test.assertSelectorHasText('.subscriber-count-text', '5');
 | 
						|
    casper.fill('form#stream_creation_form', {stream_name: '  '});
 | 
						|
    casper.click('form#stream_creation_form button.button.sea-green');
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    common.wait_for_text('#stream_name_error', 'A stream needs to have a name', function () {
 | 
						|
        casper.test.assertTextExists('A stream needs to have a name', "Can't create a stream with an empty name");
 | 
						|
        casper.click('form#stream_creation_form button.button.white');
 | 
						|
        casper.fill('form#stream_creation_form', {stream_name: 'Waseemio'});
 | 
						|
        casper.click('form#stream_creation_form button.button.sea-green');
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    common.wait_for_text('#stream_name_error', 'A stream with this name already exists', function () {
 | 
						|
        casper.test.assertTextExists('A stream with this name already exists', "Can't create a stream with a duplicate name");
 | 
						|
        casper.test.info('Streams should be filtered when typing in the create box');
 | 
						|
        casper.click('form#stream_creation_form button.button.white');
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    common.wait_for_text('#search_stream_name', '', function () {
 | 
						|
        casper.test.assertSelectorHasText('.stream-row[data-stream-name="Verona"] .stream-name', 'Verona', 'Verona stream exists before filtering');
 | 
						|
        casper.test.assertSelectorDoesntHaveText('.stream-row.notdisplayed .stream-name', 'Verona', 'Verona stream shown before filtering');
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.then(function () {
 | 
						|
    casper.evaluate(function () {
 | 
						|
        $('#stream_filter input[type="text"]')
 | 
						|
            .expectOne()
 | 
						|
            .val('waseem')
 | 
						|
            .trigger($.Event('input'));
 | 
						|
    });
 | 
						|
});
 | 
						|
casper.waitForSelectorTextChange('.streams-list', function () {
 | 
						|
    casper.test.assertSelectorHasText('.stream-row .stream-name', 'Waseemio', 'Waseemio stream exists after filtering');
 | 
						|
    casper.test.assertSelectorHasText('.stream-row.notdisplayed .stream-name', 'Verona', 'Verona stream not shown after filtering');
 | 
						|
    casper.test.assertSelectorDoesntHaveText('.stream-row.notdisplayed .stream-name', 'Waseemio', 'Waseemio stream shown after filtering');
 | 
						|
});
 | 
						|
 | 
						|
common.then_log_out();
 | 
						|
 | 
						|
casper.run(function () {
 | 
						|
    casper.test.done();
 | 
						|
});
 |