Skip to content

Commit

Permalink
add filedb tests
Browse files Browse the repository at this point in the history
  • Loading branch information
m1yon committed Jun 13, 2024
1 parent ca7df87 commit 8252492
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 29 deletions.
28 changes: 27 additions & 1 deletion internal/sqlitedb/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,38 @@ func NewDB(logger *slog.Logger, open func(driverName string, dataSourceName stri

if useLocalDB == "true" {
logger.Info("using local database")
return NewFileDB()
return NewFileDB(open)
}

return NewTursoDB(open)
}

func NewFileDB(open func(driverName string, dataSourceName string) (*sql.DB, error)) (*sql.DB, error) {
workingDir, err := os.Getwd()

if err != nil {
return nil, errors.Wrap(err, "error getting working directory")
}

// migrationsDir := workingDir + "/sql/migrations"
localDbDir := workingDir + "/db"
localDbPath := localDbDir + "/database.db"

if _, err := os.Stat(localDbDir); os.IsNotExist(err) {
err := os.Mkdir(localDbDir, os.ModePerm)
if err != nil {
return nil, err
}
}

_, err = os.OpenFile(localDbPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return nil, err
}

return open("sqlite", localDbPath)
}

func NewTursoDB(open func(driverName string, dataSourceName string) (*sql.DB, error)) (*sql.DB, error) {
dbURL := os.Getenv("DATABASE_URL")

Expand Down
34 changes: 32 additions & 2 deletions internal/sqlitedb/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,38 @@ func (m *MockSqlOpener) Open(driverName string, dataSourceName string) (*sql.DB,
return args.Get(0).(*sql.DB), args.Error(1)
}

func TestNewDB(t *testing.T) {
t.Run("returns a new db connection", func(t *testing.T) {
func TestNewFileDB(t *testing.T) {
t.Run("returns a new file db connection", func(t *testing.T) {
mockOpener := setupFileDBTest(t)

db, err := NewFileDB(mockOpener.Open)

mockOpener.AssertExpectations(t)
assert.NotNil(t, db)
assert.NoError(t, err)
})
}

func setupFileDBTest(t *testing.T) *MockSqlOpener {
t.Helper()

os.Setenv("LOCAL_DB", "true")
defer os.Setenv("LOCAL_DB", "")
workingDir, err := os.Getwd()

if err != nil {
t.Fatal("could not get working directory")
}

mockOpener := new(MockSqlOpener)
mockDb := &sql.DB{}
mockOpener.On("Open", "sqlite", workingDir+"/db/database.db").Return(mockDb, nil)

return mockOpener
}

func TestNewTursoDB(t *testing.T) {
t.Run("returns a new turso db connection", func(t *testing.T) {
dataSourceName := "libsql://jobsummoner.turso.io/db"
os.Setenv("DATABASE_URL", dataSourceName)
defer os.Setenv("DATABASE_URL", "")
Expand Down
26 changes: 0 additions & 26 deletions internal/sqlitedb/local.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,6 @@ func init() {
sql.Register("sqlite3", &sqlite.Driver{})
}

func NewFileDB() (*sql.DB, error) {
workingDir, err := os.Getwd()

if err != nil {
return nil, errors.Wrap(err, "error getting working directory")
}

migrationsDir := workingDir + "/sql/migrations"
localDbDir := workingDir + "/db"
localDbPath := localDbDir + "/database.db"

if _, err := os.Stat(localDbDir); os.IsNotExist(err) {
err := os.Mkdir(localDbDir, os.ModePerm)
if err != nil {
return nil, err
}
}

_, err = os.OpenFile(localDbPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return nil, err
}

return migrateLocalDB(localDbPath, migrationsDir)
}

func NewInMemoryDB() (*sql.DB, error) {
workingDir, err := os.Getwd()

Expand Down

0 comments on commit 8252492

Please sign in to comment.