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 }