github.com/newrelic/newrelic-client-go@v1.1.0/pkg/eventstometrics/eventstometrics_integration_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package eventstometrics
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	mock "github.com/newrelic/newrelic-client-go/pkg/testhelpers"
    12  )
    13  
    14  func TestIntegrationEventsToMetrics(t *testing.T) {
    15  	t.Parallel()
    16  
    17  	testAccountID, err := mock.GetTestAccountID()
    18  	if err != nil {
    19  		t.Skipf("%s", err)
    20  	}
    21  
    22  	var (
    23  		rand                = mock.RandSeq(5)
    24  		testRuleName        = "testRule_" + rand
    25  		testOtherRuleName   = "testRuleOther_" + rand
    26  		testRuleDescription = "testRuleDescription"
    27  		testRuleNrql        = "SELECT uniqueCount(account_id) AS `Transaction.account_id` FROM Transaction FACET appName, name"
    28  		testCreateInput     = []EventsToMetricsCreateRuleInput{
    29  			{
    30  				AccountID:   testAccountID,
    31  				Name:        testRuleName,
    32  				Description: testRuleDescription,
    33  				NRQL:        testRuleNrql,
    34  			},
    35  			{
    36  				AccountID:   testAccountID,
    37  				Name:        testOtherRuleName,
    38  				Description: testRuleDescription,
    39  				NRQL:        testRuleNrql,
    40  			},
    41  		}
    42  	)
    43  
    44  	client := newIntegrationTestClient(t)
    45  
    46  	// Test: Create
    47  	created, err := client.CreateRules(testCreateInput)
    48  
    49  	require.NoError(t, err)
    50  	require.NotNil(t, created)
    51  	require.NotEmpty(t, created)
    52  	require.Equal(t, 2, len(created))
    53  
    54  	// Test: Get
    55  	rule, err := client.GetRule(testAccountID, created[0].ID)
    56  
    57  	require.NoError(t, err)
    58  	require.NotNil(t, rule)
    59  
    60  	// Test: Get Multiple
    61  	rules, err := client.GetRules(testAccountID, []string{created[0].ID, created[1].ID})
    62  
    63  	require.NoError(t, err)
    64  	require.NotNil(t, rules)
    65  	require.NotEmpty(t, rules)
    66  	require.Equal(t, 2, len(rules))
    67  
    68  	// Test: List
    69  	rules, err = client.ListRules(testAccountID)
    70  	require.NoError(t, err)
    71  	require.Greater(t, len(rules), 0)
    72  
    73  	// Test: Update
    74  	testUpdateInput := []EventsToMetricsUpdateRuleInput{
    75  		{
    76  			AccountID: testAccountID,
    77  			RuleId:    created[0].ID,
    78  			Enabled:   false,
    79  		},
    80  	}
    81  
    82  	updated, err := client.UpdateRules(testUpdateInput)
    83  
    84  	require.NoError(t, err)
    85  	require.NotNil(t, updated)
    86  	require.NotEmpty(t, updated)
    87  	require.Equal(t, 1, len(updated))
    88  	require.Equal(t, testUpdateInput[0].Enabled, updated[0].Enabled)
    89  
    90  	// Test: Delete
    91  	testDeleteInput := []EventsToMetricsDeleteRuleInput{
    92  		{
    93  			AccountID: testAccountID,
    94  			RuleId:    created[0].ID,
    95  		},
    96  		{
    97  			AccountID: testAccountID,
    98  			RuleId:    created[1].ID,
    99  		},
   100  	}
   101  	deleted, err := client.DeleteRules(testDeleteInput)
   102  
   103  	require.NoError(t, err)
   104  	require.NotNil(t, deleted)
   105  	require.NotEmpty(t, deleted)
   106  	require.Equal(t, 2, len(deleted))
   107  }
   108  
   109  func newIntegrationTestClient(t *testing.T) EventsToMetrics {
   110  	tc := mock.NewIntegrationTestConfig(t)
   111  
   112  	return New(tc)
   113  }