22
33const assert = require ( "node:assert/strict" ) ;
44
5+ const { get_final_topic_display_name} = require ( "../src/util.ts" ) ;
6+
57const { mock_banners} = require ( "./lib/compose_banner.cjs" ) ;
68const { mock_esm, set_global, with_overrides, zrequire} = require ( "./lib/namespace.cjs" ) ;
79const { run_test, noop} = require ( "./lib/test.cjs" ) ;
810const $ = require ( "./lib/zjquery.cjs" ) ;
911
1012let autosize_called ;
13+ const REALM_EMPTY_TOPIC_DISPLAY_NAME = "general chat" ;
1114
1215const bootstrap_typeahead = mock_esm ( "../src/bootstrap_typeahead" ) ;
1316const compose_ui = mock_esm ( "../src/compose_ui" , {
@@ -61,7 +64,7 @@ const {initialize_user_settings} = zrequire("user_settings");
6164
6265const current_user = { } ;
6366set_current_user ( current_user ) ;
64- const realm = { } ;
67+ const realm = { realm_empty_topic_display_name : REALM_EMPTY_TOPIC_DISPLAY_NAME } ;
6568set_realm ( realm ) ;
6669const user_settings = { } ;
6770initialize_user_settings ( { user_settings} ) ;
@@ -853,7 +856,7 @@ test("content_typeahead_selected", ({override}) => {
853856 ct . get_or_set_token_for_testing ( "test" ) ;
854857 actual_value = ct . content_typeahead_selected (
855858 {
856- topic : "testing" ,
859+ topic_display_name : "testing" ,
857860 type : "topic_list" ,
858861 } ,
859862 query ,
@@ -866,7 +869,7 @@ test("content_typeahead_selected", ({override}) => {
866869 ct . get_or_set_token_for_testing ( "" ) ;
867870 actual_value = ct . content_typeahead_selected (
868871 {
869- topic : "testing" ,
872+ topic_display_name : "testing" ,
870873 type : "topic_list" ,
871874 } ,
872875 query ,
@@ -879,7 +882,7 @@ test("content_typeahead_selected", ({override}) => {
879882 ct . get_or_set_token_for_testing ( "" ) ;
880883 actual_value = ct . content_typeahead_selected (
881884 {
882- topic : "Sweden" ,
885+ topic_display_name : "Sweden" ,
883886 type : "topic_list" ,
884887 is_channel_link : false ,
885888 } ,
@@ -889,10 +892,24 @@ test("content_typeahead_selected", ({override}) => {
889892 expected_value = "Hello #**Sweden>Sweden** " ;
890893 assert . equal ( actual_value , expected_value ) ;
891894
895+ query = "Hello #**Sweden>general" ;
896+ ct . get_or_set_token_for_testing ( "" ) ;
897+ actual_value = ct . content_typeahead_selected (
898+ {
899+ topic_display_name : get_final_topic_display_name ( "" ) ,
900+ type : "topic_list" ,
901+ is_channel_link : false ,
902+ } ,
903+ query ,
904+ input_element ,
905+ ) ;
906+ expected_value = `Hello #**Sweden>** ` ;
907+ assert . equal ( actual_value , expected_value ) ;
908+
892909 ct . get_or_set_token_for_testing ( "" ) ;
893910 actual_value = ct . content_typeahead_selected (
894911 {
895- topic : "Sweden" ,
912+ topic_display_name : "Sweden" ,
896913 type : "topic_list" ,
897914 is_channel_link : true ,
898915 } ,
@@ -955,7 +972,15 @@ function sorted_names_from(subs) {
955972 return subs . map ( ( sub ) => sub . name ) . sort ( ) ;
956973}
957974
958- const sweden_topics_to_show = [ "<&>" , "even more ice" , "furniture" , "ice" , "kronor" , "more ice" ] ;
975+ const sweden_topics_to_show = [
976+ "<&>" ,
977+ "even more ice" ,
978+ "furniture" ,
979+ "ice" ,
980+ "kronor" ,
981+ "more ice" ,
982+ "" ,
983+ ] ;
959984
960985test ( "initialize" , ( { override, override_rewire, mock_template} ) => {
961986 mock_banners ( ) ;
@@ -1923,21 +1948,32 @@ test("begins_typeahead", ({override, override_rewire}) => {
19231948
19241949 // topic_list
19251950 // includes "more ice"
1926- function typed_topics ( topics ) {
1927- const matches_list = topics . map ( ( topic ) => ( {
1928- is_channel_link : false ,
1951+ function typed_topics ( stream , topics ) {
1952+ const matches_list = topics . map ( ( topic , index ) => ( {
1953+ is_channel_link : topic === stream && index === 0 ,
19291954 stream_data : {
19301955 ...stream_data . get_sub_by_name ( "Sweden" ) ,
19311956 rendered_description : "" ,
19321957 } ,
1933- topic,
1958+ is_empty_string_topic : topic === get_final_topic_display_name ( "" ) ,
1959+ topic_display_name : get_final_topic_display_name ( topic ) ,
19341960 type : "topic_list" ,
19351961 } ) ) ;
19361962 return matches_list ;
19371963 }
1938- assert_typeahead_equals ( "#**Sweden>more ice" , typed_topics ( [ "more ice" , "even more ice" ] ) ) ;
1939- assert_typeahead_equals ( "#**Sweden>totally new topic" , typed_topics ( [ "totally new topic" ] ) ) ;
1940- assert_typeahead_equals ( "#**Sweden>\n\nmore ice" , typed_topics ( [ ] ) ) ;
1964+ assert_typeahead_equals (
1965+ "#**Sweden>more ice" ,
1966+ typed_topics ( "Sweden" , [ "more ice" , "even more ice" ] ) ,
1967+ ) ;
1968+ assert_typeahead_equals (
1969+ "#**Sweden>" ,
1970+ typed_topics ( "Sweden" , [ "Sweden" , ...sweden_topics_to_show ] ) ,
1971+ ) ;
1972+ assert_typeahead_equals (
1973+ "#**Sweden>totally new topic" ,
1974+ typed_topics ( "Sweden" , [ "totally new topic" ] ) ,
1975+ ) ;
1976+ assert_typeahead_equals ( "#**Sweden>\n\nmore ice" , typed_topics ( "Sweden" , [ ] ) ) ;
19411977
19421978 // time_jump
19431979 const time_jump = [
0 commit comments