dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/models/devicestatus_test.go (about)

     1  package models_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/models"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestDeviceStatusKind(t *testing.T) {
    12  	t.Run("test DeviceStatusKind equals Unknown", func(t *testing.T) {
    13  		input := "Unknown"
    14  		var s models.StatusKind
    15  		err := s.UnmarshalText([]byte(input))
    16  		assert.NoError(t, err)
    17  		assert.Equal(t, models.KindUnknown, s)
    18  	})
    19  
    20  	t.Run("test DeviceStatusKind equals Online", func(t *testing.T) {
    21  		input := "Online"
    22  		var s models.StatusKind
    23  		err := s.UnmarshalText([]byte(input))
    24  		assert.NoError(t, err)
    25  		assert.Equal(t, models.KindOnline, s)
    26  	})
    27  
    28  	t.Run("test DeviceStatusKind equals Offline", func(t *testing.T) {
    29  		input := "Offline"
    30  		var s models.StatusKind
    31  		err := s.UnmarshalText([]byte(input))
    32  		assert.NoError(t, err)
    33  		assert.Equal(t, models.KindOffline, s)
    34  	})
    35  
    36  	t.Run("test DeviceStatusKind equals Idle", func(t *testing.T) {
    37  		input := "Idle"
    38  		var s models.StatusKind
    39  		err := s.UnmarshalText([]byte(input))
    40  		assert.NoError(t, err)
    41  		assert.Equal(t, models.KindIdle, s)
    42  	})
    43  
    44  	t.Run("test DeviceStatusKind not valid value", func(t *testing.T) {
    45  		input := "1234"
    46  		var s models.StatusKind
    47  		err := s.UnmarshalText([]byte(input))
    48  		assert.Error(t, err)
    49  	})
    50  
    51  	t.Run("test DeviceStatusKind not valid value but similar", func(t *testing.T) {
    52  		input := "Online123"
    53  		var s models.StatusKind
    54  		err := s.UnmarshalText([]byte(input))
    55  		assert.Error(t, err)
    56  	})
    57  }
    58  
    59  func TestDeviceStatusSilenceKind(t *testing.T) {
    60  	t.Run("test DeviceStatusSilenceKind equals Scheduled", func(t *testing.T) {
    61  		input := []byte(`"Scheduled"`)
    62  		var s models.SilenceKind
    63  		err := json.Unmarshal(input, &s)
    64  		assert.NoError(t, err)
    65  		assert.Equal(t, models.KindScheduled, s)
    66  	})
    67  
    68  	t.Run("test DeviceStatusSilenceKind equals OnDemand", func(t *testing.T) {
    69  		input := []byte(`"OnDemand"`)
    70  		var s models.SilenceKind
    71  		err := json.Unmarshal(input, &s)
    72  		assert.NoError(t, err)
    73  		assert.Equal(t, models.KindOnDemand, s)
    74  	})
    75  
    76  	t.Run("test DeviceStatusSilenceKind not valid value", func(t *testing.T) {
    77  		input := []byte(`"1234"`)
    78  		var s models.SilenceKind
    79  		err := json.Unmarshal(input, &s)
    80  		assert.Error(t, err)
    81  	})
    82  
    83  	t.Run("test DeviceStatusSilenceKind not valid value but similar", func(t *testing.T) {
    84  		input := []byte(`"OnDemand123"`)
    85  		var s models.SilenceKind
    86  		err := json.Unmarshal(input, &s)
    87  		assert.Error(t, err)
    88  	})
    89  }
    90  
    91  func TestDeviceStatus(t *testing.T) {
    92  	t.Run("test DeviceStatus without Silence", func(t *testing.T) {
    93  		input := []byte(`{
    94  			"deviceName": "Test Device",
    95  			"status": "Online",
    96  			"origin": 1234567890,
    97  			"lastUpdate": 1234567890,
    98  			"alarmCount": 0
    99  		}`)
   100  		var s models.DeviceStatus
   101  		err := json.Unmarshal(input, &s)
   102  		assert.NoError(t, err)
   103  		assert.Equal(t, models.DeviceStatus{
   104  			DeviceName:  "Test Device",
   105  			Status:      models.KindOnline,
   106  			Origin:      1234567890,
   107  			LastUpdate:  1234567890,
   108  			AlarmCount:  0,
   109  			MaxSeverity: models.AlarmNone,
   110  			Silence:     models.KindNoSilence,
   111  		}, s)
   112  	})
   113  
   114  }