provider_empty_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package config
  2. import (
  3. "encoding/json"
  4. "os"
  5. "testing"
  6. "github.com/charmbracelet/catwalk/pkg/catwalk"
  7. "github.com/stretchr/testify/require"
  8. )
  9. type emptyProviderClient struct{}
  10. func (m *emptyProviderClient) GetProviders() ([]catwalk.Provider, error) {
  11. return []catwalk.Provider{}, nil
  12. }
  13. func TestProvider_loadProvidersEmptyResult(t *testing.T) {
  14. client := &emptyProviderClient{}
  15. tmpPath := t.TempDir() + "/providers.json"
  16. providers, err := loadProviders(client, tmpPath)
  17. require.EqualError(t, err, "failed to load providers")
  18. require.Empty(t, providers)
  19. require.Len(t, providers, 0)
  20. // Check that no cache file was created for empty results
  21. require.NoFileExists(t, tmpPath, "Cache file should not exist for empty results")
  22. }
  23. func TestProvider_loadProvidersEmptyCache(t *testing.T) {
  24. client := &mockProviderClient{shouldFail: false}
  25. tmpPath := t.TempDir() + "/providers.json"
  26. // Create an empty cache file
  27. emptyProviders := []catwalk.Provider{}
  28. data, err := json.Marshal(emptyProviders)
  29. require.NoError(t, err)
  30. require.NoError(t, os.WriteFile(tmpPath, data, 0o644))
  31. // Should refresh and get real providers instead of using empty cache
  32. providers, err := loadProviders(client, tmpPath)
  33. require.NoError(t, err)
  34. require.NotNil(t, providers)
  35. require.Len(t, providers, 1)
  36. require.Equal(t, "Mock", providers[0].Name)
  37. }