From 521e27f4ace125b47879b38edbad07d7c21a54e6 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 11 Oct 2017 17:20:27 +0800 Subject: [PLT-7764] Fix in:channel search when channel name/displayname includes `-` (#7603) * fix in:channel search when channel name/displayname includes `-` * fix failing test in PostgreSQL * add lowercase indexes of channel's name and displayname to postgresql, and add unit tests --- store/storetest/channel_store.go | 120 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) (limited to 'store/storetest/channel_store.go') diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go index 53d81bdc0..52cfbbbd0 100644 --- a/store/storetest/channel_store.go +++ b/store/storetest/channel_store.go @@ -1673,6 +1673,27 @@ func testChannelStoreSearchMore(t *testing.T, ss store.Store) { o5.Type = model.CHANNEL_PRIVATE store.Must(ss.Channel().Save(&o5)) + o6 := model.Channel{} + o6.TeamId = o1.TeamId + o6.DisplayName = "Off-Topic" + o6.Name = "off-topic" + o6.Type = model.CHANNEL_OPEN + store.Must(ss.Channel().Save(&o6)) + + o7 := model.Channel{} + o7.TeamId = o1.TeamId + o7.DisplayName = "Off-Set" + o7.Name = "off-set" + o7.Type = model.CHANNEL_OPEN + store.Must(ss.Channel().Save(&o7)) + + o8 := model.Channel{} + o8.TeamId = o1.TeamId + o8.DisplayName = "Off-Limit" + o8.Name = "off-limit" + o8.Type = model.CHANNEL_PRIVATE + store.Must(ss.Channel().Save(&o8)) + if result := <-ss.Channel().SearchMore(m1.UserId, o1.TeamId, "ChannelA"); result.Err != nil { t.Fatal(result.Err) } else { @@ -1708,6 +1729,45 @@ func testChannelStoreSearchMore(t *testing.T, ss store.Store) { } } + if result := <-ss.Channel().SearchMore(m1.UserId, o1.TeamId, "off-"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 2 { + t.Fatal("should return 2 channels, not including private channel") + } + + if (*channels)[0].Name != o7.Name { + t.Fatal("wrong channel returned") + } + + if (*channels)[1].Name != o6.Name { + t.Fatal("wrong channel returned") + } + } + + if result := <-ss.Channel().SearchMore(m1.UserId, o1.TeamId, "off-topic"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 1 { + t.Fatal("should return 1 channel") + } + + if (*channels)[0].Name != o6.Name { + t.Fatal("wrong channel returned") + } + } + + if result := <-ss.Channel().SearchMore(m1.UserId, o1.TeamId, "off-topics"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 0 { + t.Logf("%v\n", *channels) + t.Fatal("should be empty") + } + } } func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { @@ -1764,6 +1824,27 @@ func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { o5.Type = model.CHANNEL_PRIVATE store.Must(ss.Channel().Save(&o5)) + o6 := model.Channel{} + o6.TeamId = o1.TeamId + o6.DisplayName = "Off-Topic" + o6.Name = "off-topic" + o6.Type = model.CHANNEL_OPEN + store.Must(ss.Channel().Save(&o6)) + + o7 := model.Channel{} + o7.TeamId = o1.TeamId + o7.DisplayName = "Off-Set" + o7.Name = "off-set" + o7.Type = model.CHANNEL_OPEN + store.Must(ss.Channel().Save(&o7)) + + o8 := model.Channel{} + o8.TeamId = o1.TeamId + o8.DisplayName = "Off-Limit" + o8.Name = "off-limit" + o8.Type = model.CHANNEL_PRIVATE + store.Must(ss.Channel().Save(&o8)) + if result := <-ss.Channel().SearchInTeam(o1.TeamId, "ChannelA"); result.Err != nil { t.Fatal(result.Err) } else { @@ -1790,6 +1871,45 @@ func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { t.Fatal("should be empty") } } + + if result := <-ss.Channel().SearchInTeam(o1.TeamId, "off-"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 2 { + t.Fatal("should return 2 channels, not including private channel") + } + + if (*channels)[0].Name != o7.Name { + t.Fatal("wrong channel returned") + } + + if (*channels)[1].Name != o6.Name { + t.Fatal("wrong channel returned") + } + } + + if result := <-ss.Channel().SearchInTeam(o1.TeamId, "off-topic"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 1 { + t.Fatal("should return 1 channel") + } + + if (*channels)[0].Name != o6.Name { + t.Fatal("wrong channel returned") + } + } + + if result := <-ss.Channel().SearchInTeam(o1.TeamId, "off-topics"); result.Err != nil { + t.Fatal(result.Err) + } else { + channels := result.Data.(*model.ChannelList) + if len(*channels) != 0 { + t.Fatal("should be empty") + } + } } func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { -- cgit v1.2.3-1-g7c22