gocontentful/test/cache_test.go
2024-11-15 16:24:52 +01:00

159 lines
5.3 KiB
Go

package test
import (
"context"
"testing"
"github.com/foomo/gocontentful/test/testapi"
"github.com/stretchr/testify/require"
)
func TestCache(t *testing.T) {
contentfulClient, err := getTestClient()
require.NotNil(t, contentfulClient)
require.NoError(t, err)
contentfulClient.ClientStats()
stats, err := contentfulClient.GetCacheStats()
require.NoError(t, err)
require.Equal(t, 3, len(stats.ContentTypes))
require.Equal(t, 12, stats.AssetCount)
require.Equal(t, 9, stats.EntryCount)
require.Equal(t, 7, stats.ParentCount)
err = contentfulClient.SetSyncMode(true)
require.Error(t, err)
}
func TestBrokenReferences(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
brokenReferences := contentfulClient.BrokenReferences()
require.Equal(t, 1, len(brokenReferences))
}
func TestCacheHasContentType(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
require.True(t, contentfulClient.CacheHasContentType("brand"))
}
func TestGetAsset(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
_, err = contentfulClient.GetAssetByID(context.TODO(), "Xc0ny7GWsMEMCeASWO2um")
require.NoError(t, err)
newAsset := testapi.NewAssetFromURL("12345", "https://example.com", "PNG", "New Asset")
require.NotNil(t, newAsset)
}
func TestDeleteAssetFromCache(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
stats, err := contentfulClient.GetCacheStats()
require.NoError(t, err)
require.Equal(t, 12, stats.AssetCount)
err = contentfulClient.DeleteAssetFromCache("Xc0ny7GWsMEMCeASWO2um")
require.NoError(t, err)
stats, err = contentfulClient.GetCacheStats()
require.NoError(t, err)
require.Equal(t, 11, stats.AssetCount)
}
func TestGetContentTypeOfID(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
contentType, err := contentfulClient.GetContentTypeOfID(context.TODO(), "651CQ8rLoIYCeY6G0QG22q")
require.NoError(t, err)
require.Equal(t, "brand", contentType)
}
func TestGetParents(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
product, err := contentfulClient.GetProductByID(context.TODO(), "6dbjWqNd9SqccegcqYq224")
require.NoError(t, err)
brandRef := product.Brand(context.TODO())
brandParents, err := brandRef.GetParents(context.TODO())
require.NoError(t, err)
require.Equal(t, 2, len(brandParents))
brandParents, err = brandRef.GetParents(context.TODO(), testapi.ContentTypeProduct)
require.NoError(t, err)
require.Equal(t, 2, len(brandParents))
brandParents, err = brandRef.GetParents(context.TODO(), testapi.ContentTypeCategory)
require.NoError(t, err)
require.Equal(t, 0, len(brandParents))
brandRef.CC = nil
brandParents, err = brandRef.GetParents(context.TODO())
require.NoError(t, err)
require.Equal(t, 2, len(brandParents))
}
func TestCacheIfNewEntry(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
stats, err := contentfulClient.GetCacheStats()
require.NoError(t, err)
require.Equal(t, 9, stats.EntryCount)
testFile, err := GetTestFile("./test-space-export-newer.json")
require.NoError(t, err)
err = contentfulClient.SetOfflineFallback(testFile)
require.NoError(t, err)
_, _, err = contentfulClient.UpdateCache(context.Background(), nil, false)
require.NoError(t, err)
stats, err = contentfulClient.GetCacheStats()
require.NoError(t, err)
require.Equal(t, 10, stats.EntryCount)
}
func TestPreserveCacheIfNewer(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
testFile, err := GetTestFile("./test-space-export-older.json")
require.NoError(t, err)
err = contentfulClient.SetOfflineFallback(testFile)
require.NoError(t, err)
_, _, err = contentfulClient.UpdateCache(context.TODO(), nil, false)
require.NoError(t, err)
brand, err := contentfulClient.GetBrandByID(context.TODO(), "JrePkDVYomE8AwcuCUyMi")
require.NoError(t, err)
require.Equal(t, 2.0, brand.Sys.Version)
}
func TestEntry(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
cfProduct := testapi.NewCfProduct(contentfulClient)
err = cfProduct.SetProductName("dummy")
require.NoError(t, err)
require.NotNil(t, cfProduct.CC)
}
func TestGenericEntries(t *testing.T) {
contentfulClient, err := getTestClient()
require.NoError(t, err)
genericEntries, err := contentfulClient.GetAllGenericEntries()
require.NoError(t, err)
require.Equal(t, 9, len(genericEntries))
genericBrand, err := contentfulClient.GetGenericEntry("651CQ8rLoIYCeY6G0QG22q")
require.NoError(t, err)
website, err := genericBrand.FieldAsString("website")
require.NoError(t, err)
require.Equal(t, "http://www.normann-copenhagen.com/", website)
genericProduct, err := contentfulClient.GetGenericEntry("6dbjWqNd9SqccegcqYq224")
require.NoError(t, err)
quantity, err := genericProduct.FieldAsFloat64("quantity")
require.NoError(t, err)
require.Equal(t, 89.0, quantity)
productBrand, err := genericProduct.FieldAsReference("brand")
require.NoError(t, err)
require.NotNil(t, productBrand)
require.Equal(t, "651CQ8rLoIYCeY6G0QG22q", productBrand.ID)
// inherit
sku, err := genericProduct.FieldAsString("sku")
require.Error(t, err)
require.Equal(t, "", sku)
ctx := context.Background()
inheritedSKU, err := genericProduct.InheritAsString(ctx, "sku", nil)
require.NoError(t, err)
require.Equal(t, "B00MG4ULK2", inheritedSKU)
}