mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	- Merge tests together. - Remove unecessary usage of `onGiteaRun`. - Make proper use of `unittest`. - Make proper use of `test.MockVariable`. - I have not checked all of the testing files yet.
		
			
				
	
	
		
			116 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2024 The Forgejo Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package integration
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"code.gitea.io/gitea/tests"
 | 
						|
 | 
						|
	"github.com/PuerkitoBio/goquery"
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
)
 | 
						|
 | 
						|
func TestRepoMigrationUI(t *testing.T) {
 | 
						|
	defer tests.PrepareTestEnv(t)()
 | 
						|
	sessionUser1 := loginUser(t, "user1")
 | 
						|
	// Nothing is tested in plain Git migration form right now
 | 
						|
	testRepoMigrationFormGitHub(t, sessionUser1)
 | 
						|
	testRepoMigrationFormGitea(t, sessionUser1)
 | 
						|
	testRepoMigrationFormGitLab(t, sessionUser1)
 | 
						|
	testRepoMigrationFormGogs(t, sessionUser1)
 | 
						|
	testRepoMigrationFormOneDev(t, sessionUser1)
 | 
						|
	testRepoMigrationFormGitBucket(t, sessionUser1)
 | 
						|
	testRepoMigrationFormCodebase(t, sessionUser1)
 | 
						|
	testRepoMigrationFormForgejo(t, sessionUser1)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitHub(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=2"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitea(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=3"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitLab(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=4"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	// Note: the checkbox "Merge requests" has name "pull_requests"
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGogs(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=5"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormOneDev(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=6"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormGitBucket(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=7"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormCodebase(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=8"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	// Note: the checkbox "Merge requests" has name "pull_requests"
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormForgejo(t *testing.T, session *TestSession) {
 | 
						|
	response := session.MakeRequest(t, NewRequest(t, "GET", "/repo/migrate?service_type=9"), http.StatusOK)
 | 
						|
	page := NewHTMLParser(t, response.Body)
 | 
						|
 | 
						|
	items := page.Find("#migrate_items .field .checkbox input")
 | 
						|
	expectedItems := []string{"issues", "pull_requests", "labels", "milestones", "releases"}
 | 
						|
	testRepoMigrationFormItems(t, items, expectedItems)
 | 
						|
}
 | 
						|
 | 
						|
func testRepoMigrationFormItems(t *testing.T, items *goquery.Selection, expectedItems []string) {
 | 
						|
	t.Helper()
 | 
						|
 | 
						|
	// Compare lengths of item lists
 | 
						|
	assert.EqualValues(t, len(expectedItems), items.Length())
 | 
						|
 | 
						|
	// Compare contents of item lists
 | 
						|
	for index, expectedName := range expectedItems {
 | 
						|
		name, exists := items.Eq(index).Attr("name")
 | 
						|
		assert.True(t, exists)
 | 
						|
		assert.EqualValues(t, expectedName, name)
 | 
						|
	}
 | 
						|
}
 |