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  })