github.com/status-im/status-go@v1.1.0/services/appmetrics/api_test.go (about)

     1  package appmetrics
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"testing"
     7  
     8  	"github.com/status-im/status-go/appdatabase"
     9  	"github.com/status-im/status-go/appmetrics"
    10  	"github.com/status-im/status-go/t/helpers"
    11  
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func setupTestDB(t *testing.T) (*appmetrics.Database, func()) {
    16  	db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "appmetrics-service")
    17  	require.NoError(t, err)
    18  	return appmetrics.NewDB(db), func() { require.NoError(t, cleanup()) }
    19  }
    20  
    21  func TestValidateAppMetrics(t *testing.T) {
    22  	db, close := setupTestDB(t)
    23  	defer close()
    24  	api := NewAPI(db)
    25  
    26  	validMetrics := []appmetrics.AppMetric{appmetrics.AppMetric{
    27  		Event:      "navigate-to",
    28  		Value:      json.RawMessage(`{"view_id": "some-view-id", "params": {"screen": "login"}}`),
    29  		AppVersion: "1.12",
    30  		OS:         "android"}}
    31  
    32  	invalidMetrics := []appmetrics.AppMetric{appmetrics.AppMetric{
    33  		Event:      "navigate-to",
    34  		Value:      json.RawMessage("{}"),
    35  		AppVersion: "1.12",
    36  		OS:         "android"}}
    37  
    38  	err := api.ValidateAppMetrics(context.Background(), validMetrics)
    39  	require.NoError(t, err)
    40  
    41  	err = api.ValidateAppMetrics(context.Background(), invalidMetrics)
    42  	require.Error(t, err)
    43  }