From 8cabd97da222b6fd90e0dcd5c1410c053906c6c5 Mon Sep 17 00:00:00 2001 From: hedhyw Date: Tue, 25 Jul 2023 15:58:28 +0300 Subject: [PATCH 1/2] fix: color styles after filtering --- internal/app/handler.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/internal/app/handler.go b/internal/app/handler.go index 47edd3c..48afc6b 100644 --- a/internal/app/handler.go +++ b/internal/app/handler.go @@ -70,25 +70,26 @@ func (m Model) handleWindowSizeMsg(msg tea.WindowSizeMsg) Model { func (m Model) handleLogEntriesMsg(msg source.LogEntries) Model { if len(m.allLogEntries) == 0 { m.allLogEntries = msg + } - tableStyles := getTableStyles() - tableStyles.RenderCell = func(value string, rowID, columnID int) string { - style := tableStyles.Cell + m.table.SetRows(msg.Rows()) + m.filteredLogEntries = msg - if columnID == cellIDLogLevel { - return removeClearSequence( - m.getLogLevelStyle(style, rowID).Render(value), - ) - } + tableStyles := getTableStyles() + tableStyles.RenderCell = func(value string, rowID, columnID int) string { + style := tableStyles.Cell - return style.Render(value) + if columnID == cellIDLogLevel { + return removeClearSequence( + m.getLogLevelStyle(style, rowID).Render(value), + ) } - m.table.SetStyles(tableStyles) + return style.Render(value) } - m.table.SetRows(msg.Rows()) - m.filteredLogEntries = msg + m.table.SetStyles(tableStyles) + m.table.UpdateViewport() return m From 0a183ad4ae0d12f601e0eb3772a7dcff45055966 Mon Sep 17 00:00:00 2001 From: hedhyw Date: Tue, 25 Jul 2023 16:04:31 +0300 Subject: [PATCH 2/2] test: add TestAppViewFilterClear --- internal/app/app_test.go | 49 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/internal/app/app_test.go b/internal/app/app_test.go index 315e1eb..9763e76 100644 --- a/internal/app/app_test.go +++ b/internal/app/app_test.go @@ -233,3 +233,52 @@ func toAppModel(teaModel tea.Model, cmd tea.Cmd) (app.Model, tea.Cmd) { return appModel, cmd } + +func TestAppViewFilterClear(t *testing.T) { + const termIncluded = "included" + + const jsonFile = ` + {"time":"1970-01-01T00:00:00.00","level":"INFO","message": "` + termIncluded + `"} + ` + + appModel := newTestModel(t, []byte(jsonFile)) + + rendered := appModel.View() + assert.Contains(t, rendered, termIncluded) + + // Open filter. + appModel, _ = toAppModel(appModel.Update(tea.KeyMsg{ + Type: tea.KeyRunes, + Runes: []rune{'f'}, + })) + assert.True(t, appModel.IsFilterShown(), appModel.View()) + + // Filter to exclude everything. + appModel, _ = toAppModel(appModel.Update(tea.KeyMsg{ + Type: tea.KeyRunes, + Runes: []rune(termIncluded + "_not_found"), + })) + appModel, cmd := toAppModel(appModel.Update(tea.KeyMsg{ + Type: tea.KeyEnter, + })) + assert.False(t, appModel.IsFilterShown(), appModel.View()) + + appModel, _ = toAppModel(appModel.Update(cmd())) + + rendered = appModel.View() + assert.NotContains(t, rendered, termIncluded) + + // Come back + appModel, cmd = toAppModel(appModel.Update(tea.KeyMsg{ + Type: tea.KeyEsc, + })) + assert.False(t, appModel.IsFilterShown(), appModel.View()) + + appModel, _ = toAppModel(appModel.Update(cmd())) + + // Assert. + if assert.False(t, appModel.IsFiltered()) { + rendered = appModel.View() + assert.Contains(t, rendered, termIncluded) + } +}