package models import ( "testing" "github.com/qdm12/gluetun/internal/constants/providers" "github.com/qdm12/gluetun/internal/constants/vpn" "github.com/stretchr/testify/assert" ) func Test_Servers_ToMarkdown(t *testing.T) { t.Parallel() testCases := map[string]struct { provider string servers Servers formatted string errWrapped error errMessage string }{ "unsupported_provider": { provider: "unsupported", errWrapped: ErrMarkdownHeadersNotDefined, errMessage: "getting markdown headers: markdown headers not defined: for unsupported", }, providers.Cyberghost: { provider: providers.Cyberghost, servers: Servers{ Servers: []Server{ {Country: "a", UDP: true, Hostname: "xa"}, {Country: "b", TCP: true, Hostname: "xb"}, }, }, formatted: "| Country | Hostname | TCP | UDP |\n" + "| --- | --- | --- | --- |\n" + "| a | `xa` | ❌ | ✅ |\n" + "| b | `xb` | ✅ | ❌ |\n", }, providers.Fastestvpn: { provider: providers.Fastestvpn, servers: Servers{ Servers: []Server{ {Country: "a", Hostname: "xa", VPN: vpn.OpenVPN, TCP: true}, {Country: "b", Hostname: "xb", VPN: vpn.OpenVPN, UDP: true}, }, }, formatted: "| Country | Hostname | VPN | TCP | UDP |\n" + "| --- | --- | --- | --- | --- |\n" + "| a | `xa` | openvpn | ✅ | ❌ |\n" + "| b | `xb` | openvpn | ❌ | ✅ |\n", }, } for name, testCase := range testCases { t.Run(name, func(t *testing.T) { t.Parallel() markdown, err := testCase.servers.toMarkdown(testCase.provider) assert.Equal(t, testCase.formatted, markdown) assert.ErrorIs(t, err, testCase.errWrapped) if testCase.errWrapped != nil { assert.EqualError(t, err, testCase.errMessage) } }) } }