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:
@@ -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
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user