github.com/GGP1/kure@v0.8.4/commands/file/rm/rm_test.go (about)

     1  package rm
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	cmdutil "github.com/GGP1/kure/commands"
     8  	"github.com/GGP1/kure/db/file"
     9  	"github.com/GGP1/kure/pb"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestRm(t *testing.T) {
    15  	db := cmdutil.SetContext(t)
    16  
    17  	names := []string{"test.txt", "directory/test.txt"}
    18  	for _, name := range names {
    19  		err := file.Create(db, &pb.File{Name: name})
    20  		assert.NoErrorf(t, err, "Failed creating %q", name)
    21  	}
    22  
    23  	cases := []struct {
    24  		desc  string
    25  		name  string
    26  		input string
    27  	}{
    28  		{
    29  			desc:  "Do not proceed",
    30  			name:  "test.txt",
    31  			input: "n",
    32  		},
    33  		{
    34  			desc:  "Remove",
    35  			name:  "test.txt",
    36  			input: "y",
    37  		},
    38  		{
    39  			desc:  "Remove directory",
    40  			name:  "directory/",
    41  			input: "y",
    42  		},
    43  	}
    44  
    45  	for _, tc := range cases {
    46  		t.Run(tc.desc, func(t *testing.T) {
    47  			buf := bytes.NewBufferString(tc.input)
    48  			cmd := NewCmd(db, buf)
    49  			cmd.SetArgs([]string{tc.name})
    50  
    51  			err := cmd.Execute()
    52  			assert.NoError(t, err)
    53  		})
    54  	}
    55  }
    56  
    57  func TestRmErrors(t *testing.T) {
    58  	db := cmdutil.SetContext(t)
    59  
    60  	cases := []struct {
    61  		desc  string
    62  		name  string
    63  		input string
    64  	}{
    65  		{
    66  			desc: "Invalid name",
    67  			name: "",
    68  		},
    69  		{
    70  			desc:  "Non existent file",
    71  			name:  "non-existent",
    72  			input: "y",
    73  		},
    74  	}
    75  
    76  	for _, tc := range cases {
    77  		t.Run(tc.desc, func(t *testing.T) {
    78  			buf := bytes.NewBufferString(tc.input)
    79  			cmd := NewCmd(db, buf)
    80  			cmd.SetArgs([]string{tc.name})
    81  
    82  			err := cmd.Execute()
    83  			assert.Error(t, err)
    84  		})
    85  	}
    86  }