...

Source file src/github.com/launchdarkly/go-server-sdk/v6/internal/datastore/data_store_eval_impl_test.go

Documentation: github.com/launchdarkly/go-server-sdk/v6/internal/datastore

     1  package datastore
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/launchdarkly/go-sdk-common/v3/ldlog"
     9  	"github.com/launchdarkly/go-server-sdk-evaluation/v2/ldbuilders"
    10  	"github.com/launchdarkly/go-server-sdk/v6/internal/datakinds"
    11  	"github.com/launchdarkly/go-server-sdk/v6/subsystems/ldstoretypes"
    12  )
    13  
    14  func TestDataStoreEvalFeatures(t *testing.T) {
    15  	store := fakeStoreForDataStoreProvider{}
    16  	flag := ldbuilders.NewFlagBuilder("flagkey").Build()
    17  	store.data = map[ldstoretypes.DataKind]map[string]ldstoretypes.ItemDescriptor{
    18  		datakinds.Features: map[string]ldstoretypes.ItemDescriptor{
    19  			flag.Key:      {Version: flag.Version, Item: &flag},
    20  			"deleted-key": {Version: 9, Item: nil},
    21  			"wrong-type":  {Version: 1, Item: "not a flag"},
    22  		},
    23  	}
    24  
    25  	provider := NewDataStoreEvaluatorDataProviderImpl(store, ldlog.NewDisabledLoggers())
    26  
    27  	assert.Equal(t, &flag, provider.GetFeatureFlag(flag.Key))
    28  	assert.Nil(t, provider.GetFeatureFlag("unknown-key"))
    29  	assert.Nil(t, provider.GetFeatureFlag("deleted-key"))
    30  	assert.Nil(t, provider.GetFeatureFlag("wrong-type"))
    31  }
    32  
    33  func TestDataStoreEvalSegments(t *testing.T) {
    34  	store := fakeStoreForDataStoreProvider{}
    35  	segment := ldbuilders.NewSegmentBuilder("segmentkey").Build()
    36  	store.data = map[ldstoretypes.DataKind]map[string]ldstoretypes.ItemDescriptor{
    37  		datakinds.Segments: map[string]ldstoretypes.ItemDescriptor{
    38  			segment.Key:   {Version: segment.Version, Item: &segment},
    39  			"deleted-key": {Version: 9, Item: nil},
    40  			"wrong-type":  {Version: 1, Item: "not a segment"},
    41  		},
    42  	}
    43  
    44  	provider := NewDataStoreEvaluatorDataProviderImpl(store, ldlog.NewDisabledLoggers())
    45  
    46  	assert.Equal(t, &segment, provider.GetSegment(segment.Key))
    47  	assert.Nil(t, provider.GetSegment("unknown-key"))
    48  	assert.Nil(t, provider.GetSegment("deleted-key"))
    49  	assert.Nil(t, provider.GetSegment("wrong-type"))
    50  }
    51  
    52  type fakeStoreForDataStoreProvider struct {
    53  	data      map[ldstoretypes.DataKind]map[string]ldstoretypes.ItemDescriptor
    54  	fakeError error
    55  }
    56  
    57  func (f fakeStoreForDataStoreProvider) Init(allData []ldstoretypes.Collection) error {
    58  	return nil
    59  }
    60  
    61  func (f fakeStoreForDataStoreProvider) Get(kind ldstoretypes.DataKind, key string) (ldstoretypes.ItemDescriptor, error) {
    62  	if f.fakeError != nil {
    63  		return ldstoretypes.ItemDescriptor{}, f.fakeError
    64  	}
    65  	return f.data[kind][key], nil
    66  }
    67  
    68  func (f fakeStoreForDataStoreProvider) GetAll(kind ldstoretypes.DataKind) ([]ldstoretypes.KeyedItemDescriptor, error) {
    69  	return nil, nil
    70  }
    71  
    72  func (f fakeStoreForDataStoreProvider) Upsert(kind ldstoretypes.DataKind, key string, item ldstoretypes.ItemDescriptor) (bool, error) {
    73  	return false, nil
    74  }
    75  
    76  func (f fakeStoreForDataStoreProvider) IsInitialized() bool {
    77  	return false
    78  }
    79  
    80  func (f fakeStoreForDataStoreProvider) IsStatusMonitoringEnabled() bool {
    81  	return false
    82  }
    83  
    84  func (f fakeStoreForDataStoreProvider) Close() error {
    85  	return nil
    86  }
    87  

View as plain text