| // Package hiddenstore handles storing and retrieving the 'hidden' status of any URL for a given search hashtag. |
| package hiddenstore |
| |
| import ( |
| "context" |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| skfirestore "go.skia.org/infra/go/firestore" |
| "go.skia.org/infra/go/testutils/unittest" |
| ) |
| |
| func TestHiddenStore_SetHidden(t *testing.T) { |
| unittest.LargeTest(t) |
| client, cleanup := skfirestore.NewClientForTesting(context.Background(), t) |
| defer cleanup() |
| |
| h := HiddenStore{ |
| client: client, |
| hiddenCollection: client.Collection("hashtag"), |
| } |
| |
| // Add a hidden. |
| ctx := context.Background() |
| err := h.SetHidden(ctx, "foo", "https://example.org", true) |
| assert.NoError(t, err) |
| list := h.GetHidden(ctx, "foo") |
| assert.ElementsMatch(t, []string{"https://example.org"}, list) |
| |
| // Add the same thing a second time, which should be a noop. |
| err = h.SetHidden(ctx, "foo", "https://example.org", true) |
| assert.NoError(t, err) |
| list = h.GetHidden(ctx, "foo") |
| assert.ElementsMatch(t, []string{"https://example.org"}, list) |
| |
| // Add a second hidden. |
| err = h.SetHidden(ctx, "foo", "http://example.com", true) |
| assert.NoError(t, err) |
| list = h.GetHidden(ctx, "foo") |
| assert.ElementsMatch(t, []string{"https://example.org", "http://example.com"}, list) |
| |
| // Remove one. |
| err = h.SetHidden(ctx, "foo", "https://example.org", false) |
| assert.NoError(t, err) |
| list = h.GetHidden(ctx, "foo") |
| assert.ElementsMatch(t, []string{"http://example.com"}, list) |
| |
| // Remove something that doesn't exist. |
| err = h.SetHidden(ctx, "bar", "https://example.org", false) |
| assert.NoError(t, err) |
| |
| } |