handling case no file to convert

This commit is contained in:
Julien Neuhart
2018-04-11 09:58:36 +02:00
parent f59054b5e0
commit 6b5a214462
2 changed files with 36 additions and 6 deletions

View File

@@ -19,6 +19,14 @@ type Converter struct {
workingDir string
}
type noFileToConvertError struct{}
const noFileToConvertErrorMessage = "No file to convert"
func (e *noFileToConvertError) Error() string {
return noFileToConvertErrorMessage
}
// NewConverter instantiates a converter by parsing a request.
func NewConverter(r *http.Request) (*Converter, error) {
c := &Converter{
@@ -53,6 +61,10 @@ func NewConverter(r *http.Request) (*Converter, error) {
c.files = append(c.files, f)
}
if len(c.files) == 0 {
return c, &noFileToConvertError{}
}
return c, nil
}

View File

@@ -21,13 +21,18 @@ func makeRequest(filesPaths ...string) *http.Request {
var part io.Writer
defer w.Close()
for _, filePath := range filesPaths {
file, _ := os.Open(filePath)
defer file.Close()
if len(filesPaths) == 0 {
part, _ = mpw.CreateFormField("foo")
part.Write([]byte("bar"))
} else {
for _, filePath := range filesPaths {
file, _ := os.Open(filePath)
defer file.Close()
fileInfo, _ := file.Stat()
part, _ = mpw.CreateFormFile("files", fileInfo.Name())
io.Copy(part, file)
fileInfo, _ := file.Stat()
part, _ = mpw.CreateFormFile("files", fileInfo.Name())
io.Copy(part, file)
}
}
mpw.Close()
@@ -64,6 +69,11 @@ func TestNewConverter(t *testing.T) {
if _, err := NewConverter(makeRequest(oPath, path)); err == nil {
t.Error("Converter should not have been instantiated!")
}
// case 5: uses a request with no file.
if _, err := NewConverter(makeRequest()); err == nil {
t.Error("Converter should not have been instantiated!")
}
}
func TestConvert(t *testing.T) {
@@ -115,3 +125,11 @@ func TestClear(t *testing.T) {
t.Error("Converter should have been able to clear itself!")
}
}
func TestNoFileToConvertError(t *testing.T) {
err := &noFileToConvertError{}
if err.Error() != noFileToConvertErrorMessage {
t.Errorf("Error returned a wrong message: got %s want %s", err.Error(), noFileToConvertErrorMessage)
}
}