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 }