github.com/mentimeter/morty@v1.2.2-0.20221012065510-5596adecd154/mortems/mortem_data_test.go (about) 1 package mortems_test 2 3 import ( 4 "errors" 5 "time" 6 7 . "github.com/mentimeter/morty/mortems" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("Mortem Content Parsing", func() { 13 Describe("title parsing", func() { 14 It("can parse correct title", func() { 15 title, err := ParseTitle("# It's alive") 16 Expect(err).NotTo(HaveOccurred()) 17 Expect(title).To(Equal("It's alive")) 18 }) 19 20 It("returns the correct error", func() { 21 _, err := ParseTitle("It's dead") 22 Expect(err).To(HaveOccurred()) 23 Expect(errors.Is(err, ErrNoTitle)).To(BeTrue()) 24 }) 25 }) 26 27 Describe("owner parsing", func() { 28 It("can parse the owner", func() { 29 owner, err := ParseOwner("Owner: Oliver Stenbom") 30 Expect(err).NotTo(HaveOccurred()) 31 Expect(owner).To(Equal("Oliver Stenbom")) 32 }) 33 34 It("doesn't matter about the heading", func() { 35 owner, err := ParseOwner("### Owner: Oliver Stenbom") 36 Expect(err).NotTo(HaveOccurred()) 37 Expect(owner).To(Equal("Oliver Stenbom")) 38 }) 39 }) 40 41 Describe("date parsing", func() { 42 It("can parse the date", func() { 43 date, err := ParseDate("Date: June 2, 2020") 44 Expect(err).NotTo(HaveOccurred()) 45 Expect(date).To(Equal(time.Date(2020, time.June, 2, 0, 0, 0, 0, time.UTC))) 46 }) 47 It("can parse the date in short month format", func() { 48 date, err := ParseDate("Date: Jun 2, 2020") 49 Expect(err).NotTo(HaveOccurred()) 50 Expect(date).To(Equal(time.Date(2020, time.June, 2, 0, 0, 0, 0, time.UTC))) 51 }) 52 }) 53 54 Describe("severity parsing", func() { 55 It("can parse the severity", func() { 56 sev, err := ParseSeverity("| Severity | 1 |") 57 Expect(err).NotTo(HaveOccurred()) 58 Expect(sev).To(Equal("1")) 59 }) 60 61 It("can parse the severity case-insensitive", func() { 62 sev, err := ParseSeverity("| severity | 1 |") 63 Expect(err).NotTo(HaveOccurred()) 64 Expect(sev).To(Equal("1")) 65 }) 66 }) 67 68 Describe("detection parsing", func() { 69 It("can parse the detection", func() { 70 detect, err := ParseDetect("| Time to Detect | 1 day, 3 hours, 6 minutes, 5 seconds |") 71 Expect(err).NotTo(HaveOccurred()) 72 dur, err := time.ParseDuration("27h6m5s") 73 Expect(err).NotTo(HaveOccurred()) 74 Expect(detect).To(Equal(dur)) 75 }) 76 77 It("can parse the detection regardless of case", func() { 78 detect, err := ParseDetect("| Time to Detect | 1 Day, 3 Hours, 6 Minutes, 5 SeCoNds |") 79 Expect(err).NotTo(HaveOccurred()) 80 dur, err := time.ParseDuration("27h6m5s") 81 Expect(err).NotTo(HaveOccurred()) 82 Expect(detect).To(Equal(dur)) 83 }) 84 85 It("can parse the detection regardless of case", func() { 86 detect, err := ParseDetect("| Time To Detect | 30 minutes |") 87 Expect(err).NotTo(HaveOccurred()) 88 dur, err := time.ParseDuration("30m") 89 Expect(err).NotTo(HaveOccurred()) 90 Expect(detect).To(Equal(dur)) 91 }) 92 }) 93 94 Describe("resolve parsing", func() { 95 It("can parse the detection", func() { 96 resolve, err := ParseResolve("| Time to Resolve | 1 day, 3 hours, 6 minutes, 5 seconds |") 97 Expect(err).NotTo(HaveOccurred()) 98 dur, err := time.ParseDuration("27h6m5s") 99 Expect(err).NotTo(HaveOccurred()) 100 Expect(resolve).To(Equal(dur)) 101 }) 102 }) 103 104 Describe("downtime parsing", func() { 105 It("can parse the detection", func() { 106 down, err := ParseDowntime("| Total Downtime | 1 day, 3 hours, 6 minutes, 5 seconds |") 107 Expect(err).NotTo(HaveOccurred()) 108 dur, err := time.ParseDuration("27h6m5s") 109 Expect(err).NotTo(HaveOccurred()) 110 Expect(down).To(Equal(dur)) 111 }) 112 }) 113 })