github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/telemetry/data_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package telemetry
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestDataToMap(t *testing.T) {
    13  	// init
    14  	testData := Data{BaseData: BaseData{ActionName: "testAction"}, CustomData: CustomData{Custom2Label: "label", Custom2: "value"}}
    15  	// test
    16  	result := testData.toMap()
    17  	// assert
    18  	assert.Contains(t, result, "action_name")
    19  	assert.Contains(t, result, "event_type")
    20  	assert.Contains(t, result, "idsite")
    21  	assert.Contains(t, result, "url")
    22  
    23  	assert.Contains(t, result, "e_3")
    24  	assert.Contains(t, result, "e_4")
    25  	assert.Contains(t, result, "e_5")
    26  	assert.Contains(t, result, "e_10")
    27  
    28  	assert.Contains(t, result, "custom3")
    29  	assert.Contains(t, result, "custom4")
    30  	assert.Contains(t, result, "custom5")
    31  	assert.Contains(t, result, "custom10")
    32  
    33  	assert.Contains(t, result, "e_27")
    34  	assert.Contains(t, result, "custom27")
    35  
    36  	assert.Equal(t, 15, len(result))
    37  }
    38  
    39  func TestDataToPayload(t *testing.T) {
    40  	t.Run("with single parameter", func(t *testing.T) {
    41  		// init
    42  		testData := Data{BaseData: BaseData{ActionName: "testAction"}}
    43  		// test
    44  		result := testData.toPayloadString()
    45  		// assert
    46  		assert.Contains(t, result, "action_name=testAction")
    47  		assert.NotContains(t, result, "idsite=")
    48  	})
    49  
    50  	t.Run("with multiple parameters", func(t *testing.T) {
    51  		// init
    52  		testData := Data{BaseData: BaseData{ActionName: "testAction", SiteID: "gl8rkd6j211bw3j1fwb8rb4h0000gn"}}
    53  		// test
    54  		result := testData.toPayloadString()
    55  		// assert
    56  		assert.Contains(t, result, "&")
    57  		assert.Contains(t, result, "action_name=testAction")
    58  		assert.Contains(t, result, "idsite=gl8rkd6j211bw3j1fwb8rb4h0000gn")
    59  	})
    60  
    61  	t.Run("encoding", func(t *testing.T) {
    62  		// init
    63  		testData := Data{BaseData: BaseData{ActionName: "t€štÄçtïøñ"}}
    64  		// test
    65  		result := testData.toPayloadString()
    66  		// assert
    67  		assert.Contains(t, result, "t%E2%82%AC%C5%A1t%C3%84%C3%A7t%C3%AF%C3%B8%C3%B1")
    68  		assert.NotContains(t, result, "t€štÄçtïøñ")
    69  	})
    70  }