mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:45:25 +01:00 
			
		
		
		
	Unit tests for models/action (#619)
This commit is contained in:
		
							parent
							
								
									f4feeecc3a
								
							
						
					
					
						commit
						4b23e6a694
					
				| @ -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
									
								
							| @ -0,0 +1,340 @@ | ||||
| package models | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestAction_GetRepoPath(t *testing.T) { | ||||
| 	action := &Action{ | ||||
| 		RepoUserName: "username", | ||||
| 		RepoName:     "reponame", | ||||
| 	} | ||||
| 	assert.Equal(t, "username/reponame", action.GetRepoPath()) | ||||
| } | ||||
| 
 | ||||
| func TestAction_GetRepoLink(t *testing.T) { | ||||
| 	action := &Action{ | ||||
| 		RepoUserName: "username", | ||||
| 		RepoName:     "reponame", | ||||
| 	} | ||||
| 	setting.AppSubURL = "/suburl/" | ||||
| 	assert.Equal(t, "/suburl/username/reponame", action.GetRepoLink()) | ||||
| 	setting.AppSubURL = "" | ||||
| 	assert.Equal(t, "/username/reponame", action.GetRepoLink()) | ||||
| } | ||||
| 
 | ||||
| func TestNewRepoAction(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 	repo := &Repository{OwnerID: user.ID} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 	repo.Owner = user | ||||
| 
 | ||||
| 	actionBean := &Action{ | ||||
| 		OpType:       ActionCreateRepo, | ||||
| 		ActUserID:    user.ID, | ||||
| 		RepoID:       repo.ID, | ||||
| 		ActUserName:  user.Name, | ||||
| 		RepoName:     repo.Name, | ||||
| 		RepoUserName: repo.Owner.Name, | ||||
| 		IsPrivate:    repo.IsPrivate, | ||||
| 	} | ||||
| 
 | ||||
| 	AssertNotExistsBean(t, actionBean) | ||||
| 	assert.NoError(t, NewRepoAction(user, repo)) | ||||
| 	AssertExistsAndLoadBean(t, actionBean) | ||||
| } | ||||
| 
 | ||||
| func TestRenameRepoAction(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 	repo := &Repository{OwnerID: user.ID} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 	repo.Owner = user | ||||
| 
 | ||||
| 	oldRepoName := repo.Name | ||||
| 	const newRepoName = "newRepoName" | ||||
| 	repo.Name = newRepoName | ||||
| 
 | ||||
| 	actionBean := &Action{ | ||||
| 		OpType:       ActionRenameRepo, | ||||
| 		ActUserID:    user.ID, | ||||
| 		ActUserName:  user.Name, | ||||
| 		RepoID:       repo.ID, | ||||
| 		RepoName:     repo.Name, | ||||
| 		RepoUserName: repo.Owner.Name, | ||||
| 		IsPrivate:    repo.IsPrivate, | ||||
| 		Content:      oldRepoName, | ||||
| 	} | ||||
| 	AssertNotExistsBean(t, actionBean) | ||||
| 	assert.NoError(t, RenameRepoAction(user, oldRepoName, repo)) | ||||
| 	AssertExistsAndLoadBean(t, actionBean) | ||||
| } | ||||
| 
 | ||||
| func TestPushCommits_ToAPIPayloadCommits(t *testing.T) { | ||||
| 	pushCommits := NewPushCommits() | ||||
| 	pushCommits.Commits = []*PushCommit{ | ||||
| 		{ | ||||
| 			Sha1:           "abcdef1", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user4@example.com", | ||||
| 			AuthorName:     "User Four", | ||||
| 			Message:        "message1", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Sha1:           "abcdef2", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user2@example.com", | ||||
| 			AuthorName:     "User Two", | ||||
| 			Message:        "message2", | ||||
| 		}, | ||||
| 	} | ||||
| 	pushCommits.Len = len(pushCommits.Commits) | ||||
| 
 | ||||
| 	payloadCommits := pushCommits.ToAPIPayloadCommits("/username/reponame") | ||||
| 	assert.Len(t, payloadCommits, 2) | ||||
| 	assert.Equal(t, "abcdef1", payloadCommits[0].ID) | ||||
| 	assert.Equal(t, "message1", payloadCommits[0].Message) | ||||
| 	assert.Equal(t, "/username/reponame/commit/abcdef1", payloadCommits[0].URL) | ||||
| 	assert.Equal(t, "User Two", payloadCommits[0].Committer.Name) | ||||
| 	assert.Equal(t, "user2", payloadCommits[0].Committer.UserName) | ||||
| 	assert.Equal(t, "User Four", payloadCommits[0].Author.Name) | ||||
| 	assert.Equal(t, "user4", payloadCommits[0].Author.UserName) | ||||
| 
 | ||||
| 	assert.Equal(t, "abcdef2", payloadCommits[1].ID) | ||||
| 	assert.Equal(t, "message2", payloadCommits[1].Message) | ||||
| 	assert.Equal(t, "/username/reponame/commit/abcdef2", payloadCommits[1].URL) | ||||
| 	assert.Equal(t, "User Two", payloadCommits[1].Committer.Name) | ||||
| 	assert.Equal(t, "user2", payloadCommits[1].Committer.UserName) | ||||
| 	assert.Equal(t, "User Two", payloadCommits[1].Author.Name) | ||||
| 	assert.Equal(t, "user2", payloadCommits[1].Author.UserName) | ||||
| } | ||||
| 
 | ||||
| func TestPushCommits_AvatarLink(t *testing.T) { | ||||
| 	pushCommits := NewPushCommits() | ||||
| 	pushCommits.Commits = []*PushCommit{ | ||||
| 		{ | ||||
| 			Sha1:           "abcdef1", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user4@example.com", | ||||
| 			AuthorName:     "User Four", | ||||
| 			Message:        "message1", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Sha1:           "abcdef2", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user2@example.com", | ||||
| 			AuthorName:     "User Two", | ||||
| 			Message:        "message2", | ||||
| 		}, | ||||
| 	} | ||||
| 	pushCommits.Len = len(pushCommits.Commits) | ||||
| 
 | ||||
| 	assert.Equal(t, | ||||
| 		"https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f", | ||||
| 		pushCommits.AvatarLink("user2@example.com")) | ||||
| 
 | ||||
| 	assert.Equal(t, | ||||
| 		"https://secure.gravatar.com/avatar/19ade630b94e1e0535b3df7387434154", | ||||
| 		pushCommits.AvatarLink("nonexistent@example.com")) | ||||
| } | ||||
| 
 | ||||
| func TestUpdateIssuesCommit(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 	pushCommits := []*PushCommit{ | ||||
| 		{ | ||||
| 			Sha1:           "abcdef1", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user4@example.com", | ||||
| 			AuthorName:     "User Four", | ||||
| 			Message:        "start working on #1", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Sha1:           "abcdef2", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user2@example.com", | ||||
| 			AuthorName:     "User Two", | ||||
| 			Message:        "a plain message", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Sha1:           "abcdef2", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user2@example.com", | ||||
| 			AuthorName:     "User Two", | ||||
| 			Message:        "close #2", | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 	repo := &Repository{ID: 1} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 	repo.Owner = user | ||||
| 
 | ||||
| 	commentBean := &Comment{ | ||||
| 		Type:      CommentTypeCommitRef, | ||||
| 		CommitSHA: "abcdef1", | ||||
| 		PosterID:  user.ID, | ||||
| 		IssueID:   1, | ||||
| 	} | ||||
| 	issueBean := &Issue{RepoID: repo.ID, Index: 2} | ||||
| 
 | ||||
| 	AssertNotExistsBean(t, commentBean) | ||||
| 	AssertNotExistsBean(t, &Issue{RepoID: repo.ID, Index: 2}, "is_closed=1") | ||||
| 	assert.NoError(t, UpdateIssuesCommit(user, repo, pushCommits)) | ||||
| 	AssertExistsAndLoadBean(t, commentBean) | ||||
| 	AssertExistsAndLoadBean(t, issueBean, "is_closed=1") | ||||
| } | ||||
| 
 | ||||
| func TestCommitRepoAction(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 	repo := &Repository{ID: 2, OwnerID: user.ID} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 	repo.Owner = user | ||||
| 
 | ||||
| 	pushCommits := NewPushCommits() | ||||
| 	pushCommits.Commits = []*PushCommit{ | ||||
| 		{ | ||||
| 			Sha1:           "abcdef1", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user4@example.com", | ||||
| 			AuthorName:     "User Four", | ||||
| 			Message:        "message1", | ||||
| 		}, | ||||
| 		{ | ||||
| 			Sha1:           "abcdef2", | ||||
| 			CommitterEmail: "user2@example.com", | ||||
| 			CommitterName:  "User Two", | ||||
| 			AuthorEmail:    "user2@example.com", | ||||
| 			AuthorName:     "User Two", | ||||
| 			Message:        "message2", | ||||
| 		}, | ||||
| 	} | ||||
| 	pushCommits.Len = len(pushCommits.Commits) | ||||
| 
 | ||||
| 	actionBean := &Action{ | ||||
| 		OpType:      ActionCommitRepo, | ||||
| 		ActUserID:   user.ID, | ||||
| 		ActUserName: user.Name, | ||||
| 		RepoID:      repo.ID, | ||||
| 		RepoName:    repo.Name, | ||||
| 		RefName:     "refName", | ||||
| 		IsPrivate:   repo.IsPrivate, | ||||
| 	} | ||||
| 	AssertNotExistsBean(t, actionBean) | ||||
| 	assert.NoError(t, CommitRepoAction(CommitRepoActionOptions{ | ||||
| 		PusherName:  user.Name, | ||||
| 		RepoOwnerID: user.ID, | ||||
| 		RepoName:    repo.Name, | ||||
| 		RefFullName: "refName", | ||||
| 		OldCommitID: "oldCommitID", | ||||
| 		NewCommitID: "newCommitID", | ||||
| 		Commits:     pushCommits, | ||||
| 	})) | ||||
| 	AssertExistsAndLoadBean(t, actionBean) | ||||
| } | ||||
| 
 | ||||
| func TestTransferRepoAction(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 
 | ||||
| 	user2 := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user2) | ||||
| 	user4 := &User{ID: 4} | ||||
| 	AssertExistsAndLoadBean(t, user4) | ||||
| 	repo := &Repository{ID: 1, OwnerID: user2.ID} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 
 | ||||
| 	repo.OwnerID = user4.ID | ||||
| 	repo.Owner = user4 | ||||
| 
 | ||||
| 	actionBean := &Action{ | ||||
| 		OpType:       ActionTransferRepo, | ||||
| 		ActUserID:    user2.ID, | ||||
| 		ActUserName:  user2.Name, | ||||
| 		RepoID:       repo.ID, | ||||
| 		RepoName:     repo.Name, | ||||
| 		RepoUserName: repo.Owner.Name, | ||||
| 		IsPrivate:    repo.IsPrivate, | ||||
| 	} | ||||
| 	AssertNotExistsBean(t, actionBean) | ||||
| 	assert.NoError(t, TransferRepoAction(user2, user2, repo)) | ||||
| 	AssertExistsAndLoadBean(t, actionBean) | ||||
| } | ||||
| 
 | ||||
| func TestMergePullRequestAction(t *testing.T) { | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 	repo := &Repository{ID: 1, OwnerID: user.ID} | ||||
| 	AssertExistsAndLoadBean(t, repo) | ||||
| 	repo.Owner = user | ||||
| 	issue := &Issue{ID: 3, RepoID: repo.ID} | ||||
| 	AssertExistsAndLoadBean(t, issue) | ||||
| 
 | ||||
| 	actionBean := &Action{ | ||||
| 		OpType:       ActionMergePullRequest, | ||||
| 		ActUserID:    user.ID, | ||||
| 		ActUserName:  user.Name, | ||||
| 		RepoID:       repo.ID, | ||||
| 		RepoName:     repo.Name, | ||||
| 		RepoUserName: repo.Owner.Name, | ||||
| 		IsPrivate:    repo.IsPrivate, | ||||
| 	} | ||||
| 	AssertNotExistsBean(t, actionBean) | ||||
| 	assert.NoError(t, MergePullRequestAction(user, repo, issue)) | ||||
| 	AssertExistsAndLoadBean(t, actionBean) | ||||
| } | ||||
| 
 | ||||
| func TestGetFeeds(t *testing.T) { | ||||
| 	// test with an individual user | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 	user := &User{ID: 2} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 
 | ||||
| 	actions, err := GetFeeds(user, user.ID, 0, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Len(t, actions, 1) | ||||
| 	assert.Equal(t, int64(1), actions[0].ID) | ||||
| 	assert.Equal(t, user.ID, actions[0].UserID) | ||||
| 
 | ||||
| 	actions, err = GetFeeds(user, user.ID, 0, true) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Len(t, actions, 0) | ||||
| } | ||||
| 
 | ||||
| func TestGetFeeds2(t *testing.T) { | ||||
| 	// test with an organization user | ||||
| 	assert.NoError(t, PrepareTestDatabase()) | ||||
| 	user := &User{ID: 3} | ||||
| 	AssertExistsAndLoadBean(t, user) | ||||
| 
 | ||||
| 	actions, err := GetFeeds(user, user.ID, 0, false) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Len(t, actions, 1) | ||||
| 	assert.Equal(t, int64(2), actions[0].ID) | ||||
| 	assert.Equal(t, user.ID, actions[0].UserID) | ||||
| 
 | ||||
| 	actions, err = GetFeeds(user, user.ID, 0, true) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Len(t, actions, 1) | ||||
| 	assert.Equal(t, int64(2), actions[0].ID) | ||||
| 	assert.Equal(t, user.ID, actions[0].UserID) | ||||
| } | ||||
							
								
								
									
										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) | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user