status-im/status-go

View on GitHub
services/browsers/api_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package browsers

import (
    "context"
    "testing"

    "github.com/stretchr/testify/require"

    "github.com/status-im/status-go/appdatabase"
    "github.com/status-im/status-go/t/helpers"
)

func setupTestDB(t *testing.T) (*Database, func()) {
    db, cleanup, err := helpers.SetupTestSQLDB(appdatabase.DbInitializer{}, "browsers-tests")
    require.NoError(t, err)
    return NewDB(db), func() { require.NoError(t, cleanup()) }
}

func setupTestAPI(t *testing.T) (*API, func()) {
    db, cancel := setupTestDB(t)
    return &API{db: db}, cancel
}

func TestBookmarks(t *testing.T) {
    api, cancel := setupTestAPI(t)
    defer cancel()

    bookmark := &Bookmark{
        Name:     "MyBookmark",
        URL:      "https://status.im",
        ImageURL: "",
    }

    _, err := api.StoreBookmark(context.TODO(), *bookmark)
    require.NoError(t, err)

    rst, err := api.GetBookmarks(context.TODO())
    require.NoError(t, err)
    require.Len(t, rst, 1)

    err = api.RemoveBookmark(context.TODO(), bookmark.URL)
    require.NoError(t, err)
    rst, err = api.GetBookmarks(context.TODO())
    require.NoError(t, err)
    require.Len(t, rst, 1)
    require.Equal(t, rst[0].Removed, true)

    require.NoError(t, api.DeleteBookmark(context.TODO(), bookmark.URL))
    rst, err = api.GetBookmarks(context.TODO())
    require.NoError(t, err)
    require.Len(t, rst, 0)

}

func TestShouldSyncBookmark(t *testing.T) {
    api, cancel := setupTestAPI(t)
    defer cancel()

    bookmark := &Bookmark{
        Name:     "MyBookmark",
        URL:      "https://status.im",
        ImageURL: "",
        Clock:    1,
    }

    _, err := api.StoreBookmark(context.TODO(), *bookmark)
    require.NoError(t, err)

    bookmark.Clock = 2
    shouldSync, err := api.db.shouldSyncBookmark(bookmark, nil)
    require.NoError(t, err)
    require.True(t, shouldSync)

    bookmark.Clock = 0
    shouldSync, err = api.db.shouldSyncBookmark(bookmark, nil)
    require.NoError(t, err)
    require.False(t, shouldSync)
}