backstack: fixed unit tests
This commit is contained in:
parent
bdd97f1b41
commit
a1c03dcb63
|
@ -4,9 +4,12 @@ import (
|
|||
"fmt"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/lmika/audax/internal/common/ui/events"
|
||||
"github.com/lmika/audax/internal/common/workspaces"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/controllers"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/providers/dynamo"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/providers/workspacestore"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/services/tables"
|
||||
workspaces_service "github.com/lmika/audax/internal/dynamo-browse/services/workspaces"
|
||||
"github.com/lmika/audax/test/testdynamo"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"os"
|
||||
|
@ -17,11 +20,14 @@ import (
|
|||
func TestTableReadController_InitTable(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
|
||||
t.Run("should prompt for table if no table name provided", func(t *testing.T) {
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "")
|
||||
|
||||
cmd := readController.Init()
|
||||
event := cmd()
|
||||
|
@ -30,7 +36,7 @@ func TestTableReadController_InitTable(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("should scan table if table name provided", func(t *testing.T) {
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "")
|
||||
|
||||
cmd := readController.Init()
|
||||
event := cmd()
|
||||
|
@ -42,9 +48,12 @@ func TestTableReadController_InitTable(t *testing.T) {
|
|||
func TestTableReadController_ListTables(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "")
|
||||
|
||||
t.Run("returns a list of tables", func(t *testing.T) {
|
||||
cmd := readController.ListTables()
|
||||
|
@ -65,10 +74,13 @@ func TestTableReadController_ListTables(t *testing.T) {
|
|||
func TestTableReadController_Rescan(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "bravo-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "bravo-table")
|
||||
|
||||
t.Run("should perform a rescan", func(t *testing.T) {
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -99,9 +111,12 @@ func TestTableReadController_Rescan(t *testing.T) {
|
|||
func TestTableReadController_ExportCSV(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "bravo-table")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "bravo-table")
|
||||
|
||||
t.Run("should export result set to CSV file", func(t *testing.T) {
|
||||
tempFile := tempFile(t)
|
||||
|
@ -122,7 +137,7 @@ func TestTableReadController_ExportCSV(t *testing.T) {
|
|||
|
||||
t.Run("should return error if result set is not set", func(t *testing.T) {
|
||||
tempFile := tempFile(t)
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "non-existant-table")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "non-existant-table")
|
||||
|
||||
invokeCommandExpectingError(t, readController.Init())
|
||||
invokeCommandExpectingError(t, readController.ExportCSV(tempFile))
|
||||
|
@ -134,9 +149,12 @@ func TestTableReadController_ExportCSV(t *testing.T) {
|
|||
func TestTableReadController_Query(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "bravo-table")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "bravo-table")
|
||||
|
||||
t.Run("should run scan with filter based on user query", func(t *testing.T) {
|
||||
tempFile := tempFile(t)
|
||||
|
@ -156,7 +174,7 @@ func TestTableReadController_Query(t *testing.T) {
|
|||
|
||||
t.Run("should return error if result set is not set", func(t *testing.T) {
|
||||
tempFile := tempFile(t)
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, "non-existant-table")
|
||||
readController := controllers.NewTableReadController(controllers.NewState(), service, workspaceService, "non-existant-table")
|
||||
|
||||
invokeCommandExpectingError(t, readController.Init())
|
||||
invokeCommandExpectingError(t, readController.ExportCSV(tempFile))
|
||||
|
@ -177,6 +195,19 @@ func tempFile(t *testing.T) string {
|
|||
return tempFile.Name()
|
||||
}
|
||||
|
||||
func testWorkspace(t *testing.T) *workspaces.Workspace {
|
||||
wsTempFile := tempFile(t)
|
||||
|
||||
wsManager := workspaces.New(workspaces.MetaInfo{Command: "dynamo-browse"})
|
||||
ws, err := wsManager.Open(wsTempFile)
|
||||
if err != nil {
|
||||
t.Fatalf("cannot create workspace manager: %v", err)
|
||||
}
|
||||
t.Cleanup(func() { ws.Close() })
|
||||
|
||||
return ws
|
||||
}
|
||||
|
||||
func invokeCommand(t *testing.T, cmd tea.Cmd) tea.Msg {
|
||||
msg := cmd()
|
||||
|
||||
|
|
|
@ -6,13 +6,18 @@ import (
|
|||
"github.com/lmika/audax/internal/dynamo-browse/controllers"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/models"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/providers/dynamo"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/providers/workspacestore"
|
||||
"github.com/lmika/audax/internal/dynamo-browse/services/tables"
|
||||
workspaces_service "github.com/lmika/audax/internal/dynamo-browse/services/workspaces"
|
||||
"github.com/lmika/audax/test/testdynamo"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTableWriteController_NewItem(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should add an item with pk and sk set at the end of the result set", func(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
|
@ -20,7 +25,7 @@ func TestTableWriteController_NewItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -43,6 +48,9 @@ func TestTableWriteController_NewItem(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should preserve the type of the field if unspecified", func(t *testing.T) {
|
||||
|
||||
scenarios := []struct {
|
||||
|
@ -80,7 +88,7 @@ func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -100,7 +108,7 @@ func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -154,7 +162,7 @@ func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
|||
for _, scenario := range scenarios {
|
||||
t.Run(fmt.Sprintf("should change the value of a field to type %v", scenario.attrType), func(t *testing.T) {
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -175,7 +183,7 @@ func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
|||
|
||||
t.Run(fmt.Sprintf("should change value of nested field to type %v", scenario.attrType), func(t *testing.T) {
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -205,12 +213,15 @@ func TestTableWriteController_SetAttributeValue(t *testing.T) {
|
|||
func TestTableWriteController_DeleteAttribute(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
provider := dynamo.NewProvider(client)
|
||||
service := tables.NewService(provider)
|
||||
|
||||
t.Run("should delete top level attribute", func(t *testing.T) {
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -226,7 +237,7 @@ func TestTableWriteController_DeleteAttribute(t *testing.T) {
|
|||
|
||||
t.Run("should delete attribute of map", func(t *testing.T) {
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -247,6 +258,9 @@ func TestTableWriteController_DeleteAttribute(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTableWriteController_PutItem(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should put the selected item if dirty", func(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
|
@ -254,7 +268,7 @@ func TestTableWriteController_PutItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -281,7 +295,7 @@ func TestTableWriteController_PutItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -312,7 +326,7 @@ func TestTableWriteController_PutItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -326,6 +340,9 @@ func TestTableWriteController_PutItem(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTableWriteController_PutItems(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should put all dirty items if none are marked", func(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
|
@ -333,7 +350,7 @@ func TestTableWriteController_PutItems(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -361,7 +378,7 @@ func TestTableWriteController_PutItems(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -397,7 +414,7 @@ func TestTableWriteController_PutItems(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
invokeCommand(t, readController.Init())
|
||||
|
@ -428,6 +445,9 @@ func TestTableWriteController_PutItems(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTableWriteController_TouchItem(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should put the selected item if unmodified", func(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
|
@ -435,7 +455,7 @@ func TestTableWriteController_TouchItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -461,7 +481,7 @@ func TestTableWriteController_TouchItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -477,6 +497,9 @@ func TestTableWriteController_TouchItem(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestTableWriteController_NoisyTouchItem(t *testing.T) {
|
||||
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(testWorkspace(t))
|
||||
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
|
||||
|
||||
t.Run("should delete and put the selected item if unmodified", func(t *testing.T) {
|
||||
client := testdynamo.SetupTestTable(t, testData)
|
||||
|
||||
|
@ -484,7 +507,7 @@ func TestTableWriteController_NoisyTouchItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
@ -510,7 +533,7 @@ func TestTableWriteController_NoisyTouchItem(t *testing.T) {
|
|||
service := tables.NewService(provider)
|
||||
|
||||
state := controllers.NewState()
|
||||
readController := controllers.NewTableReadController(state, service, "alpha-table")
|
||||
readController := controllers.NewTableReadController(state, service, workspaceService, "alpha-table")
|
||||
writeController := controllers.NewTableWriteController(state, service, readController)
|
||||
|
||||
// Read the table
|
||||
|
|
Loading…
Reference in a new issue