dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts@v1.0.2/dtos/common/base_test.go (about)

     1  //
     2  // Copyright (C) 2020 Intel Corporation
     3  //
     4  // SPDX-License-Identifier: Apache-2.0
     5  //
     6  
     7  package common
     8  
     9  import (
    10  	"encoding/json"
    11  	"fmt"
    12  	"testing"
    13  
    14  	"dev.azure.com/aidainnovazione0090/DeviceManager/_git/go-mod-core-contracts/common"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  	"github.com/stretchr/testify/require"
    18  )
    19  
    20  func TestNewBaseRequest(t *testing.T) {
    21  	actual := NewBaseRequest()
    22  	assert.Equal(t, common.ApiVersion, actual.ApiVersion)
    23  	assert.NotEmpty(t, actual.RequestId)
    24  }
    25  
    26  func TestNewBaseResponse(t *testing.T) {
    27  	expectedRequestId := "123456"
    28  	expectedStatusCode := 200
    29  	expectedMessage := "unit test message"
    30  	actual := NewBaseResponse(expectedRequestId, expectedMessage, expectedStatusCode)
    31  
    32  	assert.Equal(t, expectedRequestId, actual.RequestId)
    33  	assert.Equal(t, expectedStatusCode, actual.StatusCode)
    34  	assert.Equal(t, expectedMessage, actual.Message)
    35  }
    36  
    37  func TestNewVersionable(t *testing.T) {
    38  	actual := NewVersionable()
    39  	assert.Equal(t, common.ApiVersion, actual.ApiVersion)
    40  }
    41  
    42  func TestNewBaseWithIdResponse(t *testing.T) {
    43  	expectedRequestId := "123456"
    44  	expectedStatusCode := 200
    45  	expectedMessage := "unit test message"
    46  	expectedId := "7a1707f0-166f-4c4b-bc9d-1d54c74e0137"
    47  	actual := NewBaseWithIdResponse(expectedRequestId, expectedMessage, expectedStatusCode, expectedId)
    48  
    49  	assert.Equal(t, expectedRequestId, actual.RequestId)
    50  	assert.Equal(t, expectedStatusCode, actual.StatusCode)
    51  	assert.Equal(t, expectedMessage, actual.Message)
    52  	assert.Equal(t, expectedId, actual.Id)
    53  }
    54  
    55  func TestNewBaseWithTotalCountResponse(t *testing.T) {
    56  	expectedRequestId := "123456"
    57  	expectedStatusCode := 200
    58  	expectedMessage := "unit test message"
    59  	expectedTotalCount := uint32(3)
    60  	actual := NewBaseWithTotalCountResponse(expectedRequestId, expectedMessage, expectedStatusCode, expectedTotalCount)
    61  
    62  	assert.Equal(t, expectedRequestId, actual.RequestId)
    63  	assert.Equal(t, expectedStatusCode, actual.StatusCode)
    64  	assert.Equal(t, expectedMessage, actual.Message)
    65  	assert.Equal(t, expectedTotalCount, actual.TotalCount)
    66  }
    67  
    68  func TestBaseResponse_Marshal(t *testing.T) {
    69  	expectedRequestId := "123456"
    70  	expectedStatusCode := 200
    71  	expectedMessage := "unit test message"
    72  	response := NewBaseResponse(expectedRequestId, expectedMessage, expectedStatusCode)
    73  	expectedResponseJsonStr := fmt.Sprintf(
    74  		`{"apiVersion":"%s","requestId":"%s","message":"%s","statusCode":%d}`,
    75  		response.ApiVersion, response.RequestId, response.Message, response.StatusCode)
    76  	noRequestId := NewBaseResponse("", expectedMessage, expectedStatusCode)
    77  	expectedNoRequestIdJsonStr := fmt.Sprintf(
    78  		`{"apiVersion":"%s","message":"%s","statusCode":%d}`,
    79  		noRequestId.ApiVersion, noRequestId.Message, noRequestId.StatusCode)
    80  	noMessage := NewBaseResponse(expectedRequestId, "", expectedStatusCode)
    81  	expectedNoMessageJsonStr := fmt.Sprintf(
    82  		`{"apiVersion":"%s","requestId":"%s","statusCode":%d}`,
    83  		noMessage.ApiVersion, noMessage.RequestId, noMessage.StatusCode)
    84  
    85  	tests := []struct {
    86  		name     string
    87  		data     BaseResponse
    88  		expected string
    89  	}{
    90  		{"JSON marshal base response", response, expectedResponseJsonStr},
    91  		{"JSON marshal base response, no requestId", noRequestId, expectedNoRequestIdJsonStr},
    92  		{"JSON marshal base response, no message", noMessage, expectedNoMessageJsonStr},
    93  	}
    94  	for _, tt := range tests {
    95  		t.Run(tt.name, func(t *testing.T) {
    96  			result, err := json.Marshal(tt.data)
    97  			require.NoError(t, err)
    98  			assert.Equal(t, tt.expected, string(result))
    99  		})
   100  	}
   101  }