Skip to content

Commit

Permalink
initial
Browse files Browse the repository at this point in the history
  • Loading branch information
Kachit committed May 7, 2022
1 parent 313e69d commit 26798a5
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 2 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ go 1.17

require (
github.com/stretchr/testify v1.7.0
gopkg.in/DATA-DOG/go-sqlmock.v1 v1.3.0
gorm.io/driver/postgres v1.3.5
gorm.io/gorm v1.23.5
)
Expand Down
21 changes: 21 additions & 0 deletions mocks_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package gorm_seeder

import (
"gopkg.in/DATA-DOG/go-sqlmock.v1"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)

func getDatabaseMock() (*gorm.DB, sqlmock.Sqlmock) {
mockDB, mock, _ := sqlmock.New()

dialector := postgres.New(postgres.Config{
DSN: "sqlmock_db",
DriverName: "postgres",
Conn: mockDB,
PreferSimpleProtocol: true,
})

db, _ := gorm.Open(dialector, &gorm.Config{})
return db, mock
}
13 changes: 11 additions & 2 deletions seeder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@ package gorm_seeder

import (
"github.com/stretchr/testify/assert"
"regexp"
"testing"
)

func Test_Foo(t *testing.T) {
assert.True(t, true)
func Test_SeederAbstract_Delete(t *testing.T) {
db, mock := getDatabaseMock()
mock.MatchExpectationsInOrder(false)

mock.ExpectQuery(regexp.QuoteMeta(
`DELETE FROM foo`))

sa := NewSeederAbstract(SeederConfiguration{})
err := sa.Delete(db, "foo")
assert.NoError(t, err)
}
65 changes: 65 additions & 0 deletions stubs_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package gorm_seeder

import (
"gorm.io/gorm"
"time"
)

type StubUsersSeeder struct {
SeederAbstract
}

func NewUsersSeeder(cfg SeederConfiguration) StubUsersSeeder {
return StubUsersSeeder{NewSeederAbstract(cfg)}
}

type StubUser struct {
Id uint64 `json:"id" gorm:"primaryKey"`
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
CreatedAt time.Time `json:"created_at"`
}

func (u *StubUser) BeforeCreate(tx *gorm.DB) (err error) {
u.CreatedAt = time.Now().UTC()
return
}

// TableName overrides
func (StubUser) TableName() string {
return "users"
}

func (s *StubUsersSeeder) Seed1(db *gorm.DB) error {
var users []StubUser
for i := 0; i < s.Configuration.Rows; i++ {
user := StubUser{
Name: "Name LastName",
Email: "foo@bar.gov",
Password: "password-hash-string",
}
users = append(users, user)
}
return db.CreateInBatches(users, s.Configuration.Rows).Error
}

func (s *StubUsersSeeder) Seed(db *gorm.DB) error {
for i := 0; i < s.Configuration.Rows; i++ {
user := StubUser{
Name: "Name LastName",
Email: "foo@bar.gov",
Password: "password-hash-string",
}
err := db.Create(&user).Error
if err != nil {
return err
}
}
return nil
}

func (s *StubUsersSeeder) Clear(db *gorm.DB) error {
entity := StubUser{}
return s.SeederAbstract.Delete(db, entity.TableName())
}

0 comments on commit 26798a5

Please sign in to comment.