mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-21 23:01:03 +00:00
173 lines
3 KiB
Go
173 lines
3 KiB
Go
package commands
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/jesseduffield/lazydocker/pkg/config"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func sampleContainers(userConfig *config.AppConfig) []*Container {
|
|
return []*Container{
|
|
{
|
|
ID: "1",
|
|
Name: "1",
|
|
Container: types.Container{
|
|
State: "exited",
|
|
},
|
|
Config: userConfig,
|
|
},
|
|
{
|
|
ID: "2",
|
|
Name: "2",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: userConfig,
|
|
},
|
|
{
|
|
ID: "3",
|
|
Name: "3",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: userConfig,
|
|
},
|
|
{
|
|
ID: "4",
|
|
Name: "4",
|
|
Container: types.Container{
|
|
State: "created",
|
|
},
|
|
Config: userConfig,
|
|
},
|
|
}
|
|
}
|
|
|
|
func expectedPerStatusContainers(appConfig *config.AppConfig) []*Container {
|
|
return []*Container{
|
|
{
|
|
ID: "2",
|
|
Name: "2",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "3",
|
|
Name: "3",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "1",
|
|
Name: "1",
|
|
Container: types.Container{
|
|
State: "exited",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "4",
|
|
Name: "4",
|
|
Container: types.Container{
|
|
State: "created",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
}
|
|
}
|
|
|
|
func expectedLegacySortedContainers(appConfig *config.AppConfig) []*Container {
|
|
return []*Container{
|
|
{
|
|
ID: "1",
|
|
Name: "1",
|
|
Container: types.Container{
|
|
State: "exited",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "2",
|
|
Name: "2",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "3",
|
|
Name: "3",
|
|
Container: types.Container{
|
|
State: "running",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
{
|
|
ID: "4",
|
|
Name: "4",
|
|
Container: types.Container{
|
|
State: "created",
|
|
},
|
|
Config: appConfig,
|
|
},
|
|
}
|
|
}
|
|
|
|
func assertEqualContainers(t *testing.T, left *Container, right *Container) {
|
|
t.Helper()
|
|
assert.Equal(t, left.Container.State, right.Container.State)
|
|
assert.Equal(t, left.Container.ID, right.Container.ID)
|
|
assert.Equal(t, left.Name, right.Name)
|
|
}
|
|
|
|
func TestSortContainers(t *testing.T) {
|
|
appConfig := NewDummyAppConfig()
|
|
appConfig.UserConfig = &config.UserConfig{
|
|
Gui: config.GuiConfig{
|
|
LegacySortContainers: false,
|
|
},
|
|
}
|
|
command := &DockerCommand{
|
|
Config: appConfig,
|
|
}
|
|
|
|
containers := sampleContainers(appConfig)
|
|
|
|
sorted := expectedPerStatusContainers(appConfig)
|
|
|
|
ct := command.sortedContainers(containers)
|
|
|
|
assert.Equal(t, len(ct), len(sorted))
|
|
|
|
for i := 0; i < len(ct); i++ {
|
|
assertEqualContainers(t, sorted[i], ct[i])
|
|
}
|
|
}
|
|
|
|
func TestLegacySortedContainers(t *testing.T) {
|
|
appConfig := NewDummyAppConfig()
|
|
appConfig.UserConfig = &config.UserConfig{
|
|
Gui: config.GuiConfig{
|
|
LegacySortContainers: true,
|
|
},
|
|
}
|
|
command := &DockerCommand{
|
|
Config: appConfig,
|
|
}
|
|
|
|
containers := sampleContainers(appConfig)
|
|
|
|
sorted := expectedLegacySortedContainers(appConfig)
|
|
|
|
ct := command.sortedContainers(containers)
|
|
|
|
for i := 0; i < len(ct); i++ {
|
|
assertEqualContainers(t, sorted[i], ct[i])
|
|
}
|
|
}
|