Unit tests for models/action (#619)
This commit is contained in:
@ -19,10 +19,10 @@ var accessModes = []AccessMode{
|
||||
func TestAccessLevel(t *testing.T) {
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
|
||||
user1 := &User{ID: 2}; LoadTestFixture(t, user1)
|
||||
user2 := &User{ID: 4}; LoadTestFixture(t, user2)
|
||||
repo1 := &Repository{OwnerID: 2, IsPrivate: false}; LoadTestFixture(t, repo1)
|
||||
repo2 := &Repository{OwnerID: 3, IsPrivate: true}; LoadTestFixture(t, repo2)
|
||||
user1 := &User{ID: 2}; AssertExistsAndLoadBean(t, user1)
|
||||
user2 := &User{ID: 4}; AssertExistsAndLoadBean(t, user2)
|
||||
repo1 := &Repository{OwnerID: 2, IsPrivate: false}; AssertExistsAndLoadBean(t, repo1)
|
||||
repo2 := &Repository{OwnerID: 3, IsPrivate: true}; AssertExistsAndLoadBean(t, repo2)
|
||||
|
||||
level, err := AccessLevel(user1, repo1)
|
||||
assert.NoError(t, err)
|
||||
@ -44,10 +44,10 @@ func TestAccessLevel(t *testing.T) {
|
||||
func TestHasAccess(t *testing.T) {
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
|
||||
user1 := &User{ID: 2}; LoadTestFixture(t, user1)
|
||||
user2 := &User{ID: 4}; LoadTestFixture(t, user2)
|
||||
repo1 := &Repository{OwnerID: 2, IsPrivate: false}; LoadTestFixture(t, repo1)
|
||||
repo2 := &Repository{OwnerID: 3, IsPrivate: true}; LoadTestFixture(t, repo2)
|
||||
user1 := &User{ID: 2}; AssertExistsAndLoadBean(t, user1)
|
||||
user2 := &User{ID: 4}; AssertExistsAndLoadBean(t, user2)
|
||||
repo1 := &Repository{OwnerID: 2, IsPrivate: false}; AssertExistsAndLoadBean(t, repo1)
|
||||
repo2 := &Repository{OwnerID: 3, IsPrivate: true}; AssertExistsAndLoadBean(t, repo2)
|
||||
|
||||
for _, accessMode := range accessModes {
|
||||
has, err := HasAccess(user1, repo1, accessMode)
|
||||
@ -71,8 +71,8 @@ func TestHasAccess(t *testing.T) {
|
||||
func TestUser_GetRepositoryAccesses(t *testing.T) {
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
|
||||
user1 := &User{ID: 1}; LoadTestFixture(t, user1)
|
||||
user2 := &User{ID: 2}; LoadTestFixture(t, user2)
|
||||
user1 := &User{ID: 1}; AssertExistsAndLoadBean(t, user1)
|
||||
user2 := &User{ID: 2}; AssertExistsAndLoadBean(t, user2)
|
||||
|
||||
accesses, err := user1.GetRepositoryAccesses()
|
||||
assert.NoError(t, err)
|
||||
@ -82,8 +82,8 @@ func TestUser_GetRepositoryAccesses(t *testing.T) {
|
||||
func TestUser_GetAccessibleRepositories(t *testing.T) {
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
|
||||
user1 := &User{ID: 1}; LoadTestFixture(t, user1)
|
||||
user2 := &User{ID: 2}; LoadTestFixture(t, user2)
|
||||
user1 := &User{ID: 1}; AssertExistsAndLoadBean(t, user1)
|
||||
user2 := &User{ID: 2}; AssertExistsAndLoadBean(t, user2)
|
||||
|
||||
repos, err := user1.GetAccessibleRepositories(0)
|
||||
assert.NoError(t, err)
|
||||
@ -98,7 +98,7 @@ func TestUser_GetAccessibleRepositories(t *testing.T) {
|
||||
func TestRepository_RecalculateAccesses(t *testing.T) {
|
||||
// test with organization repo
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
repo1 := &Repository{ID: 3}; LoadTestFixture(t, repo1)
|
||||
repo1 := &Repository{ID: 3}; AssertExistsAndLoadBean(t, repo1)
|
||||
assert.NoError(t, repo1.GetOwner())
|
||||
|
||||
sess := x.NewSession()
|
||||
@ -119,7 +119,7 @@ func TestRepository_RecalculateAccesses(t *testing.T) {
|
||||
func TestRepository_RecalculateAccesses2(t *testing.T) {
|
||||
// test with non-organization repo
|
||||
assert.NoError(t, PrepareTestDatabase())
|
||||
repo1 := &Repository{ID: 4}; LoadTestFixture(t, repo1)
|
||||
repo1 := &Repository{ID: 4}; AssertExistsAndLoadBean(t, repo1)
|
||||
assert.NoError(t, repo1.GetOwner())
|
||||
|
||||
sess := x.NewSession()
|
||||
|
340
models/action_test.go
Normal file
340
models/action_test.go
Normal file
File diff suppressed because it is too large
Load Diff
22
models/fixtures/action.yml
Normal file
22
models/fixtures/action.yml
Normal file
@ -0,0 +1,22 @@
|
||||
-
|
||||
id: 1
|
||||
user_id: 2
|
||||
op_type: 12 # close issue
|
||||
act_user_id: 2
|
||||
act_user_name: user2
|
||||
repo_id: 2
|
||||
repo_user_name: user2
|
||||
repo_name: repo2
|
||||
is_private: true
|
||||
|
||||
-
|
||||
id: 2
|
||||
user_id: 3
|
||||
op_type: 2 # rename repo
|
||||
act_user_id: 3
|
||||
act_user_name: user3
|
||||
repo_id: 3
|
||||
repo_user_name: user3
|
||||
repo_name: repo3 # TODO old or new name?
|
||||
is_private: false
|
||||
content: oldRepoName
|
@ -2,6 +2,7 @@
|
||||
id: 1
|
||||
lower_name: user1
|
||||
name: user1
|
||||
full_name: User One
|
||||
email: user1@example.com
|
||||
passwd: password
|
||||
type: 0 # individual
|
||||
@ -15,6 +16,7 @@
|
||||
id: 2
|
||||
lower_name: user2
|
||||
name: user2
|
||||
full_name: User Two
|
||||
email: user2@example.com
|
||||
passwd: password
|
||||
type: 0 # individual
|
||||
@ -28,6 +30,7 @@
|
||||
id: 3
|
||||
lower_name: user3
|
||||
name: user3
|
||||
full_name: User Three
|
||||
email: user3@example.com
|
||||
passwd: password
|
||||
type: 1 # organization
|
||||
@ -41,6 +44,7 @@
|
||||
id: 4
|
||||
lower_name: user4
|
||||
name: user4
|
||||
full_name: User Four
|
||||
email: user4@example.com
|
||||
passwd: password
|
||||
type: 1 # individual
|
||||
@ -54,6 +58,7 @@
|
||||
id: 5
|
||||
lower_name: user5
|
||||
name: user5
|
||||
full_name: User Five
|
||||
email: user5@example.com
|
||||
passwd: password
|
||||
type: 1 # individual
|
||||
|
@ -47,16 +47,27 @@ func PrepareTestDatabase() error {
|
||||
return fixtures.Load()
|
||||
}
|
||||
|
||||
// LoadFixture load a test fixture from the test database, failing if fixture
|
||||
// does not exist
|
||||
func LoadTestFixture(t *testing.T, fixture interface{}, conditions... interface{}) {
|
||||
func loadBeanIfExists(bean interface{}, conditions ...interface{}) (bool, error) {
|
||||
sess := x.NewSession()
|
||||
defer sess.Close()
|
||||
|
||||
for _, cond := range conditions {
|
||||
sess = sess.Where(cond)
|
||||
}
|
||||
has, err := sess.Get(fixture)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, has)
|
||||
return sess.Get(bean)
|
||||
}
|
||||
|
||||
// AssertExistsAndLoadBean assert that a bean exists and load it from the test
|
||||
// database
|
||||
func AssertExistsAndLoadBean(t *testing.T, bean interface{}, conditions ...interface{}) {
|
||||
exists, err := loadBeanIfExists(bean, conditions...)
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, exists)
|
||||
}
|
||||
|
||||
// AssertNotExistsBean assert that a bean does not exist in the test database
|
||||
func AssertNotExistsBean(t *testing.T, bean interface{}, conditions ...interface{}) {
|
||||
exists, err := loadBeanIfExists(bean, conditions...)
|
||||
assert.NoError(t, err)
|
||||
assert.False(t, exists)
|
||||
}
|
||||
|
Reference in New Issue
Block a user