From 6950a3730548298b7a8685ee8318b06bcbfee004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Thu, 5 Dec 2019 14:49:29 +0100 Subject: [PATCH] Add quey to thread message search --- messaging/repository/message.go | 5 +++ tests/messaging/message_search_test.go | 46 ++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 tests/messaging/message_search_test.go diff --git a/messaging/repository/message.go b/messaging/repository/message.go index 094386167..2d1057cf4 100644 --- a/messaging/repository/message.go +++ b/messaging/repository/message.go @@ -220,6 +220,11 @@ func (r *message) FindThreads(filter types.MessageFilter) (set types.MessageSet, // Prepare the actual message selector query := r.query().Join("originals ON (original_id IN (id, reply_to))") + if f.Query != "" { + q := "%" + strings.ToLower(f.Query) + "%" + query = query.Where(squirrel.Like{"LOWER(m.message)": q}) + } + // And create CTE cte := squirrel.ConcatExpr("WITH originals AS (", originals, ") ", query) diff --git a/tests/messaging/message_search_test.go b/tests/messaging/message_search_test.go new file mode 100644 index 000000000..2028b6f8e --- /dev/null +++ b/tests/messaging/message_search_test.go @@ -0,0 +1,46 @@ +package messaging + +import ( + "net/http" + "testing" + + "github.com/cortezaproject/corteza-server/tests/helpers" + jsonpath "github.com/steinfletcher/apitest-jsonpath" +) + +func TestMessageSearch(t *testing.T) { + h := newHelper(t) + ch := h.repoMakePublicCh() + + h.repoMakeMessage("searchTestMessageA", ch, h.cUser) + h.repoMakeMessage("searchTestMessageB", ch, h.cUser) + + h.apiInit(). + Get("/search/messages"). + Query("query", "searchTestMessageA"). + Expect(t). + Status(http.StatusOK). + Assert(helpers.AssertNoErrors). + Assert(jsonpath.Len(`$.response`, 1)). + End() +} + +func TestMessageThreadSearch(t *testing.T) { + h := newHelper(t) + ch := h.repoMakePublicCh() + + msgA := h.repoMakeMessage("searchTestMessageThreadA", ch, h.cUser) + h.apiMessageCreateReply("thrA", msgA) + + msgB := h.repoMakeMessage("searchTestMessageThreadB", ch, h.cUser) + h.apiMessageCreateReply("thrB", msgB) + + h.apiInit(). + Get("/search/threads"). + Query("query", "searchTestMessageThreadA"). + Expect(t). + Status(http.StatusOK). + Assert(helpers.AssertNoErrors). + Assert(jsonpath.Len(`$.response`, 1)). + End() +}