mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Add node tests for message_edit.get_editability.
This commit is contained in:
		
							
								
								
									
										70
									
								
								frontend_tests/node_tests/message_edit.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								frontend_tests/node_tests/message_edit.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
set_global('document', null);
 | 
			
		||||
set_global('page_params', {});
 | 
			
		||||
 | 
			
		||||
add_dependencies({
 | 
			
		||||
    XDate: 'third/xdate/xdate.dev.js',
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
var message_edit = require('js/message_edit.js');
 | 
			
		||||
var get_editability = message_edit.get_editability;
 | 
			
		||||
var editability_types = message_edit.editability_types;
 | 
			
		||||
 | 
			
		||||
(function test_get_editability() {
 | 
			
		||||
    // You can't edit a null message
 | 
			
		||||
    assert.equal(get_editability(null), editability_types.NO);
 | 
			
		||||
    // You can't edit a message you didn't send
 | 
			
		||||
    assert.equal(get_editability({
 | 
			
		||||
        sent_by_me: false,
 | 
			
		||||
    }), editability_types.NO);
 | 
			
		||||
 | 
			
		||||
    // If the server returns the message with an error (e.g. due to
 | 
			
		||||
    // malformed markdown), you can edit the message regardless of the realm
 | 
			
		||||
    // message editing policy, since the message hasn't actually been sent yet
 | 
			
		||||
    assert.equal(get_editability({
 | 
			
		||||
        sent_by_me: true,
 | 
			
		||||
        failed_request: true,
 | 
			
		||||
    }), editability_types.FULL);
 | 
			
		||||
 | 
			
		||||
    // Locally echoed messages are not editable, since the message hasn't
 | 
			
		||||
    // finished being sent yet.
 | 
			
		||||
    assert.equal(get_editability({
 | 
			
		||||
        sent_by_me: true,
 | 
			
		||||
        local_id: 25,
 | 
			
		||||
    }), editability_types.NO);
 | 
			
		||||
 | 
			
		||||
    // For the rest of these tests, we only consider messages sent by the
 | 
			
		||||
    // user, and that were successfully sent (i.e. no failed_request or local_id)
 | 
			
		||||
    var message = {
 | 
			
		||||
        sent_by_me: true
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    global.page_params = {
 | 
			
		||||
        realm_allow_message_editing: false
 | 
			
		||||
    };
 | 
			
		||||
    assert.equal(get_editability(message), editability_types.NO);
 | 
			
		||||
 | 
			
		||||
    global.page_params = {
 | 
			
		||||
        realm_allow_message_editing: true,
 | 
			
		||||
        // Limit of 0 means no time limit on editing messages
 | 
			
		||||
        realm_message_content_edit_limit_seconds: 0
 | 
			
		||||
    };
 | 
			
		||||
    assert.equal(get_editability(message), editability_types.FULL);
 | 
			
		||||
 | 
			
		||||
    global.page_params = {
 | 
			
		||||
        realm_allow_message_editing: true,
 | 
			
		||||
        realm_message_content_edit_limit_seconds: 10
 | 
			
		||||
    };
 | 
			
		||||
    var now = new Date();
 | 
			
		||||
    var current_timestamp = now/1000;
 | 
			
		||||
    message.timestamp = current_timestamp - 60;
 | 
			
		||||
    // Have 55+10 > 60 seconds from message.timestamp to edit the message; we're good!
 | 
			
		||||
    assert.equal(get_editability(message, 55), editability_types.FULL);
 | 
			
		||||
    // It's been 60 > 45+10 since message.timestamp. When realm_allow_message_editing
 | 
			
		||||
    // is true, we can edit the topic if there is one.
 | 
			
		||||
    message.type = 'stream';
 | 
			
		||||
    assert.equal(get_editability(message, 45), editability_types.TOPIC_ONLY);
 | 
			
		||||
    message.type = 'private';
 | 
			
		||||
    assert.equal(get_editability(message, 45), editability_types.NO_LONGER);
 | 
			
		||||
    // If we don't pass a second argument, treat it as 0
 | 
			
		||||
    assert.equal(get_editability(message), editability_types.NO_LONGER);
 | 
			
		||||
}());
 | 
			
		||||
		Reference in New Issue
	
	Block a user