Files
dingtalk-workspace-cli/internal/helpers/sheet_dimension_coverage_more_test.go

89 lines
3.4 KiB
Go

package helpers
import (
"io"
"testing"
"github.com/spf13/cobra"
)
func dimensionCoverageCommand(t *testing.T, name string) *cobra.Command {
t.Helper()
for _, cmd := range newDimensionCmds() {
if cmd.Name() == name {
cmd.SilenceErrors = true
cmd.SilenceUsage = true
cmd.SetOut(io.Discard)
cmd.SetErr(io.Discard)
return cmd
}
}
t.Fatalf("dimension command %q not found", name)
return nil
}
func executeDimensionCoverage(t *testing.T, name string, args ...string) error {
t.Helper()
cmd := dimensionCoverageCommand(t, name)
cmd.SetArgs(args)
return cmd.Execute()
}
func TestCrossPlatformCoverageDimensionValidationRemainingCoverage(t *testing.T) {
installScriptedCaller(t, &scriptedToolCaller{dry: true})
common := []string{"--node", "node", "--sheet-id", "sheet"}
if err := executeDimensionCoverage(t, "insert-dimension", append(common, "--dimension", "ROWS", "--position", "1", "--length", "5001")...); err == nil {
t.Fatal("oversized insert returned nil")
}
for _, tc := range []struct {
dimension string
extra []string
wantErr bool
}{
{"ROW", []string{"--start-index", "1", "--end-index", "2", "--destination-index", "3"}, false},
{"COLUMN", []string{"--start-index", "A", "--end-index", "B", "--destination-index", "C"}, false},
{"ROWS", []string{"--end-index", "2", "--destination-index", "3"}, true},
{"ROWS", []string{"--start-index", "1", "--destination-index", "3"}, true},
{"ROWS", []string{"--start-index", "1", "--end-index", "2"}, true},
} {
args := append(append([]string{}, common...), "--dimension", tc.dimension)
args = append(args, tc.extra...)
err := executeDimensionCoverage(t, "move-dimension", args...)
if (err != nil) != tc.wantErr {
t.Errorf("move %s %v error=%v", tc.dimension, tc.extra, err)
}
}
add := dimensionCoverageCommand(t, "add-dimension")
_ = add.Flags().Set("dimension", "ROWS")
add.Flags().Lookup("length").Value = invalidIntFlagValue{}
if err := add.RunE(add, nil); err == nil {
t.Fatal("invalid add length returned nil")
}
if err := executeDimensionCoverage(t, "add-dimension", append(common, "--dimension", "ROWS", "--length", "5001")...); err == nil {
t.Fatal("oversized add returned nil")
}
if err := executeDimensionCoverage(t, "delete-dimension", append(common, "--dimension", "ROWS", "--position", "1", "--length", "5001")...); err == nil {
t.Fatal("oversized delete returned nil")
}
if err := executeDimensionCoverage(t, "update-dimension", append(common, "--dimension", "ROWS", "--start-index", "1", "--length", "5001", "--hidden")...); err == nil {
t.Fatal("oversized update returned nil")
}
if err := executeDimensionCoverage(t, "update-dimension", append(common, "--dimension", "ROWS", "--start-index", "1", "--length", "1")...); err == nil {
t.Fatal("update without property returned nil")
}
}
func TestCrossPlatformCoverageDropdownValidationRemainingCoverage(t *testing.T) {
installScriptedCaller(t, &scriptedToolCaller{dry: true})
base := []string{"--node", "node", "--sheet-id", "sheet", "--range", "A1"}
for _, options := range []string{"[]", `[{"value":"a,b"}]`} {
if err := executeDimensionCoverage(t, "set-dropdown", append(base, "--options", options)...); err == nil {
t.Fatalf("options %s returned nil", options)
}
}
if err := executeDimensionCoverage(t, "set-dropdown", append(base, "--options", `[{"value":"a"}]`, "--multi-select")...); err != nil {
t.Fatalf("multi-select dropdown: %v", err)
}
}