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

     1  //
     2  // Copyright (C) 2021 IOTech Ltd
     3  //
     4  // SPDX-License-Identifier: Apache-2.0
     5  
     6  package models_test
     7  
     8  import (
     9  	"encoding/json"
    10  	"testing"
    11  
    12  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common"
    13  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/models"
    14  
    15  	"github.com/stretchr/testify/assert"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func subscriptionData() models.Subscription {
    20  	return models.Subscription{
    21  		Id:   ExampleUUID,
    22  		Name: TestSubscriptionName,
    23  		Channels: []models.Address{
    24  			models.EmailAddress{
    25  				BaseAddress: models.BaseAddress{Type: common.EMAIL},
    26  				Recipients:  []string{"test@example.com"},
    27  			},
    28  		},
    29  		Receiver: TestSubscriptionReceiver,
    30  	}
    31  }
    32  
    33  func TestSubscription_UnmarshalJSON(t *testing.T) {
    34  	valid := subscriptionData()
    35  	jsonData, err := json.Marshal(valid)
    36  	require.NoError(t, err)
    37  	tests := []struct {
    38  		name     string
    39  		expected models.Subscription
    40  		data     []byte
    41  		wantErr  bool
    42  	}{
    43  		{"valid, unmarshal Subscription", valid, jsonData, false},
    44  		{"invalid, unmarshal invalid Subscription, empty data", models.Subscription{}, []byte{}, true},
    45  		{"invalid, unmarshal invalid Subscription, string data", models.Subscription{}, []byte("Invalid Subscription"), true},
    46  	}
    47  	for _, tt := range tests {
    48  		t.Run(tt.name, func(t *testing.T) {
    49  			var result models.Subscription
    50  			err := result.UnmarshalJSON(tt.data)
    51  			if tt.wantErr {
    52  				require.Error(t, err)
    53  			} else {
    54  				require.NoError(t, err)
    55  				assert.Equal(t, tt.expected, result, "Unmarshal did not result in expected AddSubscriptionRequest.")
    56  			}
    57  		})
    58  	}
    59  }