diff --git a/internal/parsers/aviation_parser.go b/internal/parsers/aviation_parser.go index 563960d..0aed3fa 100644 --- a/internal/parsers/aviation_parser.go +++ b/internal/parsers/aviation_parser.go @@ -164,7 +164,7 @@ func Parse(rawText string) (*domain.ParsedMessage, error) { return &message, nil } -func clean(text string) string { +func cleanMessage(text string) string { cleanedText := emptyLineRemove.ReplaceAllString(text, "") cleanText := strings.ReplaceAll(cleanedText, "\n\n", "\n") if match := bodyOnly.FindStringSubmatch(cleanText); len(match) > 1 { @@ -179,7 +179,7 @@ func clean(text string) string { func ParseHeader(fullMessage string) (domain.ParsedMessage, error) { log := utils.GetSugaredLogger() - fullMessage = clean(fullMessage) + fullMessage = cleanMessage(fullMessage) lines := strings.Split(fullMessage, "\n") if len(lines) < 3 { diff --git a/internal/parsers/aviation_parser_test.go b/internal/parsers/aviation_parser_test.go index 1a7c484..4035f11 100644 --- a/internal/parsers/aviation_parser_test.go +++ b/internal/parsers/aviation_parser_test.go @@ -17,7 +17,7 @@ GG ZBTJZXZX (ARR-CES5470-ZBTJ-ZSHC1614) NNNN` It("should get a clean body text", func() { - body := clean(message) + body := cleanMessage(message) expected := `ZCZC TMQ2530 141614 GG ZBTJZXZX 141614 ZSHCZTZX @@ -247,4 +247,56 @@ NNNN }) }) }) + + Describe("Utility Functions", func() { + + It("should clean text correctly", func() { + text := `ZCZC TMQ2530 141614 + +1234 + 4567 +NNNN` + expect := "ZCZC TMQ2530 141614\n1234\n 4567" + cleaned := cleanMessage(text) + Expect(cleaned).To(Equal(expect)) + }) + + It("should parse start indicator correctly", func() { + line := "ZCZC TMQ2530 141614" + startIndicator, messageID, dateTime, err := parseStartIndicator(line) + Expect(err).ToNot(HaveOccurred()) + Expect(startIndicator).To(Equal("ZCZC")) + Expect(messageID).To(Equal("TMQ2530")) + Expect(dateTime).To(Equal("141614")) + }) + + It("should return error for invalid start indicator line", func() { + line := "Invalid Line" + _, _, _, err := parseStartIndicator(line) + Expect(err).To(HaveOccurred()) + }) + + It("should parse priority and primary address correctly", func() { + line := "QU TSNZPCA" + priority, primary := parsePriorityAndPrimary(line) + Expect(priority).To(Equal("QU")) + Expect(primary).To(Equal("TSNZPCA")) + }) + + It("should return empty strings for invalid priority and primary address line", func() { + line := "Invalid-Line" + priority, primary := parsePriorityAndPrimary(line) + Expect(priority).To(BeEmpty()) + Expect(primary).To(BeEmpty()) + }) + + It("should parse remaining lines correctly", func() { + lines := []string{"QU PEKUDCA TSNUOCA TSNZPCA TSNUFCA", ".SELOZKE 170999", "BEGIN PART 01"} + secondaryAddresses, originator, originatorDateTime, bodyAndFooter := parseRemainingLines(lines) + Expect(secondaryAddresses).To(Equal([]string{"QU PEKUDCA TSNUOCA TSNZPCA TSNUFCA"})) + Expect(originator).To(Equal("SELOZKE")) + Expect(originatorDateTime).To(Equal("170999")) + Expect(bodyAndFooter).To(Equal("BEGIN PART 01\n")) + }) + }) })