diff --git a/parser/parser_test.go b/parser/parser_test.go new file mode 100644 index 00000000..53555ad1 --- /dev/null +++ b/parser/parser_test.go @@ -0,0 +1,63 @@ +package parser + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_Parser(t *testing.T) { + + input := ` +FROM model1 +ADAPTER adapter1 +LICENSE MIT +PARAMETER param1 value1 +PARAMETER param2 value2 +TEMPLATE template1 +` + + reader := strings.NewReader(input) + + commands, err := Parse(reader) + assert.Nil(t, err) + + expectedCommands := []Command{ + {Name: "model", Args: "model1"}, + {Name: "adapter", Args: "adapter1"}, + {Name: "license", Args: "MIT"}, + {Name: "param1", Args: "value1"}, + {Name: "param2", Args: "value2"}, + {Name: "template", Args: "template1"}, + } + + assert.Equal(t, expectedCommands, commands) +} + +func Test_Parser_NoFromLine(t *testing.T) { + + input := ` +PARAMETER param1 value1 +PARAMETER param2 value2 +` + + reader := strings.NewReader(input) + + _, err := Parse(reader) + assert.ErrorContains(t, err, "no FROM line") +} + +func Test_Parser_MissingValue(t *testing.T) { + + input := ` +FROM foo +PARAMETER param1 +` + + reader := strings.NewReader(input) + + _, err := Parse(reader) + assert.ErrorContains(t, err, "missing value for [param1]") + +}