github.com/status-im/status-go@v1.1.0/services/gif/gif_test.go (about)

     1  package gif
     2  
     3  import (
     4  	"database/sql"
     5  	"encoding/json"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/status-im/status-go/appdatabase"
    11  	"github.com/status-im/status-go/multiaccounts/accounts"
    12  	"github.com/status-im/status-go/t/helpers"
    13  )
    14  
    15  func setupSQLTestDb(t *testing.T) (*sql.DB, func()) {
    16  	db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "local-notifications-tests-")
    17  	require.NoError(t, err)
    18  	return db, func() { require.NoError(t, cleanup()) }
    19  }
    20  
    21  func setupTestDB(t *testing.T, db *sql.DB) (*accounts.Database, func()) {
    22  	acc, err := accounts.NewDB(db)
    23  	require.NoError(t, err)
    24  	return acc, func() {
    25  		require.NoError(t, db.Close())
    26  	}
    27  }
    28  
    29  func TestSetTenorAPIKey(t *testing.T) {
    30  	appDB, appStop := setupSQLTestDb(t)
    31  	defer appStop()
    32  
    33  	db, stop := setupTestDB(t, appDB)
    34  	defer stop()
    35  
    36  	gifAPI := NewGifAPI(db)
    37  
    38  	require.NoError(t, gifAPI.SetTenorAPIKey("DU7DWZ27STB2"))
    39  	require.Equal(t, "DU7DWZ27STB2", tenorAPIKey)
    40  }
    41  
    42  func TestGetContentWithRetry(t *testing.T) {
    43  	appDB, appStop := setupSQLTestDb(t)
    44  	defer appStop()
    45  
    46  	db, stop := setupTestDB(t, appDB)
    47  	defer stop()
    48  
    49  	gifAPI := NewGifAPI(db)
    50  
    51  	require.NoError(t, gifAPI.SetTenorAPIKey(""))
    52  	require.Equal(t, "", tenorAPIKey)
    53  
    54  	gifs, err := gifAPI.GetContentWithRetry("trending?")
    55  	require.Error(t, err)
    56  	require.Equal(t, "", gifs)
    57  
    58  	require.NoError(t, gifAPI.SetTenorAPIKey("DU7DWZ27STB2"))
    59  	require.Equal(t, "DU7DWZ27STB2", tenorAPIKey)
    60  
    61  	gifs, err = gifAPI.GetContentWithRetry("trending?")
    62  	require.NoError(t, err)
    63  	require.NotEqual(t, "", gifs)
    64  }
    65  
    66  func TestFavoriteGifs(t *testing.T) {
    67  	appDB, appStop := setupSQLTestDb(t)
    68  	defer appStop()
    69  
    70  	db, stop := setupTestDB(t, appDB)
    71  	defer stop()
    72  
    73  	gifAPI := NewGifAPI(db)
    74  
    75  	require.NoError(t, gifAPI.SetTenorAPIKey("DU7DWZ27STB2"))
    76  	require.Equal(t, "DU7DWZ27STB2", tenorAPIKey)
    77  
    78  	recent := map[string]interface{}{
    79  		"id":         "23833142",
    80  		"title":      "",
    81  		"url":        "https://media.tenor.com/images/b845ae14f43883e5cd6283e705f09efb/tenor.gif",
    82  		"tinyUrl":    "https://media.tenor.com/images/2067bdc0375f9606dfb9fb4d2bfaafde/tenor.gif",
    83  		"height":     498,
    84  		"isFavorite": true,
    85  	}
    86  
    87  	newRecents := map[string]interface{}{
    88  		"items": recent,
    89  	}
    90  	inputJSON := map[string]interface{}{
    91  		"jsonrpc": "2.0",
    92  		"method":  "gif_setTenorAPIKey",
    93  		"params":  newRecents,
    94  	}
    95  	like, _ := json.Marshal(inputJSON)
    96  
    97  	source := (json.RawMessage)(like)
    98  
    99  	require.NoError(t, gifAPI.UpdateFavoriteGifs(source))
   100  }
   101  
   102  func TestRecentGifs(t *testing.T) {
   103  	appDB, appStop := setupSQLTestDb(t)
   104  	defer appStop()
   105  
   106  	db, stop := setupTestDB(t, appDB)
   107  	defer stop()
   108  
   109  	gifAPI := NewGifAPI(db)
   110  
   111  	require.NoError(t, gifAPI.SetTenorAPIKey("DU7DWZ27STB2"))
   112  	require.Equal(t, "DU7DWZ27STB2", tenorAPIKey)
   113  
   114  	recent := map[string]interface{}{
   115  		"id":         "23833142",
   116  		"title":      "",
   117  		"url":        "https://media.tenor.com/images/b845ae14f43883e5cd6283e705f09efb/tenor.gif",
   118  		"tinyUrl":    "https://media.tenor.com/images/2067bdc0375f9606dfb9fb4d2bfaafde/tenor.gif",
   119  		"height":     498,
   120  		"isFavorite": true,
   121  	}
   122  
   123  	newRecents := map[string]interface{}{
   124  		"items": recent,
   125  	}
   126  	inputJSON := map[string]interface{}{
   127  		"jsonrpc": "2.0",
   128  		"method":  "gif_setTenorAPIKey",
   129  		"params":  newRecents,
   130  	}
   131  	like, _ := json.Marshal(inputJSON)
   132  
   133  	source := (json.RawMessage)(like)
   134  
   135  	require.NoError(t, gifAPI.UpdateRecentGifs(source))
   136  }