github.com/wtfutil/wtf@v0.43.0/modules/feedreader/widget_test.go (about)

     1  package feedreader
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/mmcdole/gofeed"
     7  	"gotest.tools/assert"
     8  )
     9  
    10  func Test_getShowText(t *testing.T) {
    11  	tests := []struct {
    12  		name     string
    13  		feedItem *FeedItem
    14  		showType ShowType
    15  		expected string
    16  	}{
    17  		{
    18  			name:     "with nil FeedItem",
    19  			feedItem: nil,
    20  			showType: SHOW_TITLE,
    21  			expected: "",
    22  		},
    23  		{
    24  			name: "with plain title",
    25  			feedItem: &FeedItem{
    26  				item: &gofeed.Item{Title: "Cats and Dogs"},
    27  			},
    28  			showType: SHOW_TITLE,
    29  			expected: "[white]Cats and Dogs",
    30  		},
    31  		{
    32  			name: "with escaped title",
    33  			feedItem: &FeedItem{
    34  				item: &gofeed.Item{Title: "<Cats and Dogs>"},
    35  			},
    36  			showType: SHOW_TITLE,
    37  			expected: "[white]<Cats and Dogs>",
    38  		},
    39  		{
    40  			name: "with unescaped title",
    41  			feedItem: &FeedItem{
    42  				item: &gofeed.Item{Title: "<Cats and Dogs>"},
    43  			},
    44  			showType: SHOW_TITLE,
    45  			expected: "[white]<Cats and Dogs>",
    46  		},
    47  		{
    48  			name: "with source-title",
    49  			feedItem: &FeedItem{
    50  				sourceTitle: "WTF",
    51  				item:        &gofeed.Item{Title: "<Cats and Dogs>"},
    52  			},
    53  			showType: SHOW_TITLE,
    54  			expected: "[green]WTF [white]<Cats and Dogs>",
    55  		},
    56  		{
    57  			name: "with link",
    58  			feedItem: &FeedItem{
    59  				item: &gofeed.Item{Title: "Cats and Dogs", Link: "https://cats.com/dog.xml"},
    60  			},
    61  			showType: SHOW_LINK,
    62  			expected: "https://cats.com/dog.xml",
    63  		},
    64  	}
    65  
    66  	for _, tt := range tests {
    67  		t.Run(tt.name, func(t *testing.T) {
    68  			widget := &Widget{
    69  				settings: &Settings{
    70  					colors: colors{
    71  						source:      "green",
    72  						publishDate: "orange",
    73  					},
    74  					showSource: true,
    75  				},
    76  				showType: tt.showType,
    77  			}
    78  
    79  			actual := widget.getShowText(tt.feedItem, "white")
    80  
    81  			assert.Equal(t, tt.expected, actual)
    82  		})
    83  	}
    84  }