github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/cmd/syft/cli/ui/handle_file_metadata_cataloger_test.go (about) 1 package ui 2 3 import ( 4 "testing" 5 "time" 6 7 tea "github.com/charmbracelet/bubbletea" 8 "github.com/gkampitakis/go-snaps/snaps" 9 "github.com/stretchr/testify/require" 10 "github.com/wagoodman/go-partybus" 11 "github.com/wagoodman/go-progress" 12 13 "github.com/anchore/bubbly/bubbles/taskprogress" 14 syftEvent "github.com/anchore/syft/syft/event" 15 ) 16 17 func TestHandler_handleFileMetadataCatalogerStarted(t *testing.T) { 18 19 tests := []struct { 20 name string 21 eventFn func(*testing.T) partybus.Event 22 iterations int 23 }{ 24 { 25 name: "cataloging in progress", 26 eventFn: func(t *testing.T) partybus.Event { 27 prog := &progress.Manual{} 28 prog.SetTotal(100) 29 prog.Set(50) 30 31 mon := struct { 32 progress.Progressable 33 progress.Stager 34 }{ 35 Progressable: prog, 36 Stager: &progress.Stage{ 37 Current: "current", 38 }, 39 } 40 41 return partybus.Event{ 42 Type: syftEvent.FileMetadataCatalogerStarted, 43 Value: mon, 44 } 45 }, 46 }, 47 { 48 name: "cataloging complete", 49 eventFn: func(t *testing.T) partybus.Event { 50 prog := &progress.Manual{} 51 prog.SetTotal(100) 52 prog.Set(100) 53 prog.SetCompleted() 54 55 mon := struct { 56 progress.Progressable 57 progress.Stager 58 }{ 59 Progressable: prog, 60 Stager: &progress.Stage{ 61 Current: "current", 62 }, 63 } 64 65 return partybus.Event{ 66 Type: syftEvent.FileMetadataCatalogerStarted, 67 Value: mon, 68 } 69 }, 70 }, 71 } 72 for _, tt := range tests { 73 t.Run(tt.name, func(t *testing.T) { 74 event := tt.eventFn(t) 75 handler := New(DefaultHandlerConfig()) 76 handler.WindowSize = tea.WindowSizeMsg{ 77 Width: 100, 78 Height: 80, 79 } 80 81 models := handler.Handle(event) 82 require.Len(t, models, 1) 83 model := models[0] 84 85 tsk, ok := model.(taskprogress.Model) 86 require.True(t, ok) 87 88 got := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{ 89 Time: time.Now(), 90 Sequence: tsk.Sequence(), 91 ID: tsk.ID(), 92 }) 93 t.Log(got) 94 snaps.MatchSnapshot(t, got) 95 }) 96 } 97 }