github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/storetest/system_store.go (about)

     1  // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package storetest
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/xzl8028/xenia-server/model"
    13  	"github.com/xzl8028/xenia-server/store"
    14  )
    15  
    16  func TestSystemStore(t *testing.T, ss store.Store) {
    17  	t.Run("", func(t *testing.T) { testSystemStore(t, ss) })
    18  	t.Run("SaveOrUpdate", func(t *testing.T) { testSystemStoreSaveOrUpdate(t, ss) })
    19  	t.Run("PermanentDeleteByName", func(t *testing.T) { testSystemStorePermanentDeleteByName(t, ss) })
    20  }
    21  
    22  func testSystemStore(t *testing.T, ss store.Store) {
    23  	system := &model.System{Name: model.NewId(), Value: "value"}
    24  	err := ss.System().Save(system)
    25  	require.Nil(t, err)
    26  
    27  	systems, _ := ss.System().Get()
    28  
    29  	require.Equal(t, system.Value, systems[system.Name])
    30  
    31  	system.Value = "value2"
    32  	err = ss.System().Update(system)
    33  	require.Nil(t, err)
    34  
    35  	systems2, _ := ss.System().Get()
    36  	require.Equal(t, system.Value, systems2[system.Name])
    37  
    38  	rsystem, _ := ss.System().GetByName(system.Name)
    39  	require.Equal(t, system.Value, rsystem.Value)
    40  }
    41  
    42  func testSystemStoreSaveOrUpdate(t *testing.T, ss store.Store) {
    43  	system := &model.System{Name: model.NewId(), Value: "value"}
    44  
    45  	if err := ss.System().SaveOrUpdate(system); err != nil {
    46  		t.Fatal(err)
    47  	}
    48  
    49  	system.Value = "value2"
    50  
    51  	if err := ss.System().SaveOrUpdate(system); err != nil {
    52  		t.Fatal(err)
    53  	}
    54  }
    55  
    56  func testSystemStorePermanentDeleteByName(t *testing.T, ss store.Store) {
    57  	s1 := &model.System{Name: model.NewId(), Value: "value"}
    58  	s2 := &model.System{Name: model.NewId(), Value: "value"}
    59  
    60  	err := ss.System().Save(s1)
    61  	require.Nil(t, err)
    62  	err = ss.System().Save(s2)
    63  	require.Nil(t, err)
    64  
    65  	_, err = ss.System().GetByName(s1.Name)
    66  	assert.Nil(t, err)
    67  
    68  	_, err = ss.System().GetByName(s2.Name)
    69  	assert.Nil(t, err)
    70  
    71  	_, err = ss.System().PermanentDeleteByName(s1.Name)
    72  	assert.Nil(t, err)
    73  
    74  	_, err = ss.System().GetByName(s1.Name)
    75  	assert.NotNil(t, err)
    76  
    77  	_, err = ss.System().GetByName(s2.Name)
    78  	assert.Nil(t, err)
    79  
    80  	_, err = ss.System().PermanentDeleteByName(s2.Name)
    81  	assert.Nil(t, err)
    82  
    83  	_, err = ss.System().GetByName(s1.Name)
    84  	assert.NotNil(t, err)
    85  
    86  	_, err = ss.System().GetByName(s2.Name)
    87  	assert.NotNil(t, err)
    88  }