github.com/status-im/status-go@v1.1.0/services/connector/database/persistence_test.go (about)

     1  package persistence
     2  
     3  import (
     4  	"testing"
     5  
     6  	"database/sql"
     7  
     8  	"github.com/status-im/status-go/eth-node/types"
     9  	"github.com/status-im/status-go/t/helpers"
    10  	"github.com/status-im/status-go/walletdatabase"
    11  
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  var testDApp = DApp{
    16  	Name:          "Test DApp",
    17  	URL:           "https://test-dapp-url.com",
    18  	IconURL:       "https://test-dapp-icon-url.com",
    19  	SharedAccount: types.HexToAddress("0x1234567890"),
    20  	ChainID:       0x1,
    21  }
    22  
    23  func setupTestDB(t *testing.T) (db *sql.DB, close func()) {
    24  	db, err := helpers.SetupTestMemorySQLDB(walletdatabase.DbInitializer{})
    25  	require.NoError(t, err)
    26  	return db, func() {
    27  		require.NoError(t, db.Close())
    28  	}
    29  }
    30  
    31  func TestInsertAndSelectDApp(t *testing.T) {
    32  	db, close := setupTestDB(t)
    33  	defer close()
    34  
    35  	err := UpsertDApp(db, &testDApp)
    36  	require.NoError(t, err)
    37  
    38  	dAppBack, err := SelectDAppByUrl(db, testDApp.URL)
    39  	require.NoError(t, err)
    40  	require.Equal(t, &testDApp, dAppBack)
    41  }
    42  
    43  func TestInsertAndUpdateDApp(t *testing.T) {
    44  	db, close := setupTestDB(t)
    45  	defer close()
    46  
    47  	err := UpsertDApp(db, &testDApp)
    48  	require.NoError(t, err)
    49  
    50  	updatedDApp := DApp{
    51  		Name:    "Updated Test DApp",
    52  		URL:     testDApp.URL,
    53  		IconURL: "https://updated-test-dapp-icon-url.com",
    54  	}
    55  
    56  	err = UpsertDApp(db, &updatedDApp)
    57  	require.NoError(t, err)
    58  
    59  	dAppBack, err := SelectDAppByUrl(db, testDApp.URL)
    60  	require.NoError(t, err)
    61  	require.Equal(t, &updatedDApp, dAppBack)
    62  	require.NotEqual(t, &testDApp, dAppBack)
    63  }
    64  
    65  func TestInsertAndRemoveDApp(t *testing.T) {
    66  	db, close := setupTestDB(t)
    67  	defer close()
    68  
    69  	err := UpsertDApp(db, &testDApp)
    70  	require.NoError(t, err)
    71  
    72  	dAppBack, err := SelectDAppByUrl(db, testDApp.URL)
    73  	require.NoError(t, err)
    74  	require.Equal(t, &testDApp, dAppBack)
    75  
    76  	err = DeleteDApp(db, testDApp.URL)
    77  	require.NoError(t, err)
    78  
    79  	dAppBack, err = SelectDAppByUrl(db, testDApp.URL)
    80  	require.NoError(t, err)
    81  	require.Empty(t, dAppBack)
    82  }
    83  
    84  func TestSelectAllDApps(t *testing.T) {
    85  	db, close := setupTestDB(t)
    86  	defer close()
    87  
    88  	err := UpsertDApp(db, &testDApp)
    89  	require.NoError(t, err)
    90  
    91  	dApps, err := SelectAllDApps(db)
    92  	require.NoError(t, err)
    93  	require.Len(t, dApps, 1)
    94  	require.Equal(t, testDApp, dApps[0])
    95  }