INFRA-3570 : Do not show the current severity and status in update incident in slack UI (#439)

* INFRA-3570 : Do not show same severity and status in update incident in slack UI

* INFRA-3570 : Cyclic dependency fix

* INFRA-3570 : Minor changes

* INFRA-3570 : Add UT'S

* INFRA-3570 : Major refactor

* INFRA-3570 : Move all incident status repo functions to new service

* INFRA-3570 : Add UT's
This commit is contained in:
Vijay Joshi
2024-07-18 13:17:28 +05:30
committed by GitHub
parent 0ef44c2b49
commit 55da2b4791
52 changed files with 857 additions and 662 deletions

View File

@@ -1,18 +1,21 @@
package impl
import (
"fmt"
"go.uber.org/zap"
"houston/common/util/dto"
"houston/logger"
"houston/model/severity"
severityRepo "houston/repository/severity"
"houston/service/dtoConverter"
"sort"
)
type SeverityService struct {
severityRepository severity.ISeverityRepository
severityRepository severityRepo.ISeverityRepository
}
func NewSeverityService(severityRepository severity.ISeverityRepository) *SeverityService {
func NewSeverityService(severityRepository severityRepo.ISeverityRepository) *SeverityService {
return &SeverityService{
severityRepository: severityRepository,
}
@@ -44,11 +47,27 @@ func (service *SeverityService) FindSeverityById(severityId uint) (*severity.Sev
return nil, err
}
if severityEntity == nil {
errMessage := fmt.Sprintf("severity with id %d not found", severityId)
logger.Error(errMessage)
return nil, fmt.Errorf(errMessage)
}
severityDTO := severityEntity.ToDTO()
return &severityDTO, err
}
func (service *SeverityService) GetSeveritiesNotMatchingIncidentSeverity(channelID string) ([]severity.SeverityDTO, error) {
severities, err := service.severityRepository.GetSeveritiesNotMatchingIncidentSeverity(channelID)
if err != nil {
logger.Error("failed to get severities not matching incident severity", zap.Error(err))
return nil, err
}
return dto.ToDtoArray[severity.SeverityEntity, severity.SeverityDTO](severities), nil
}
func (service *SeverityService) createSeverityEscalationMap(severities []severity.SeverityDTO) map[uint]*severity.SeverityDTO {
sort.Slice(severities, func(i, j int) bool {
return severities[i].Priority > severities[j].Priority

View File

@@ -33,6 +33,25 @@ func (suite *SeverityServiceSuite) Test_GetAllActiveSeverities_SuccessCase() {
suite.Len(severities, len(*mockSeverityEntities), "length of severities should be equal")
}
func (suite *SeverityServiceSuite) Test_GetSeveritiesNotMatchingIncidentSeverity_RepoFailureCase() {
suite.severityRepository.GetSeveritiesNotMatchingIncidentSeverityMock.Return(nil, errors.New("error"))
severities, err := suite.severityService.GetSeveritiesNotMatchingIncidentSeverity("channelID")
suite.Nil(severities, "severities should be nil")
suite.NotNil(err, "error should not be nil")
}
func (suite *SeverityServiceSuite) Test_GetSeveritiesNotMatchingIncidentSeverity_SuccessCase() {
mockSeverityEntities := *GetMockSeverityEntities()
suite.severityRepository.GetSeveritiesNotMatchingIncidentSeverityMock.Return(mockSeverityEntities, nil)
severities, err := suite.severityService.GetSeveritiesNotMatchingIncidentSeverity("channelID")
suite.Nil(err, "error should be nil")
suite.NotNil(severities, "severities should not be nil")
suite.Len(severities, len(mockSeverityEntities), "length of severities should be equal")
}
func GetMockSeverityEntities() *[]severity.SeverityEntity {
return &[]severity.SeverityEntity{
{Name: "Low", Description: "Low severity"},

View File

@@ -6,4 +6,5 @@ type ISeverityService interface {
GetAllActiveSeverities() ([]severity.SeverityDTO, error)
GetSeverityEscalationMap() (map[uint]*severity.SeverityDTO, error)
FindSeverityById(severityId uint) (*severity.SeverityDTO, error)
GetSeveritiesNotMatchingIncidentSeverity(channelID string) ([]severity.SeverityDTO, error)
}