mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-20 02:29:44 +08:00
Restore integration tests
The new layout broke some integration tests as it is now necessary to click on a link to display additional options. Tests have also been rewritten to take the new design (and new features) into account.
This commit is contained in:
@@ -27,6 +27,8 @@ import static org.junit.Assert.assertTrue
|
|||||||
*/
|
*/
|
||||||
class ProjectAssert {
|
class ProjectAssert {
|
||||||
|
|
||||||
|
public static final DEFAULT_PACKAGE_NAME = 'com.example'
|
||||||
|
|
||||||
private static final DEFAULT_APPLICATION_NAME = generateDefaultApplicationName()
|
private static final DEFAULT_APPLICATION_NAME = generateDefaultApplicationName()
|
||||||
|
|
||||||
final File dir
|
final File dir
|
||||||
@@ -95,29 +97,32 @@ class ProjectAssert {
|
|||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectAssert isJavaProject(String expectedApplicationName) {
|
ProjectAssert isJavaProject(String expectedPackageName, String expectedApplicationName) {
|
||||||
hasFile("src/main/java/com/example/${expectedApplicationName}.java",
|
String packageName = expectedPackageName.replace('.', '/')
|
||||||
"src/test/java/com/example/${expectedApplicationName}Tests.java",
|
hasFile("src/main/java/$packageName/${expectedApplicationName}.java",
|
||||||
|
"src/test/java/$packageName/${expectedApplicationName}Tests.java",
|
||||||
'src/main/resources/application.properties')
|
'src/main/resources/application.properties')
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectAssert isJavaProject() {
|
ProjectAssert isJavaProject() {
|
||||||
isJavaProject(DEFAULT_APPLICATION_NAME)
|
isJavaProject(DEFAULT_PACKAGE_NAME, DEFAULT_APPLICATION_NAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectAssert isGroovyProject(String expectedApplicationName) {
|
ProjectAssert isGroovyProject(String expectedPackageName, String expectedApplicationName) {
|
||||||
String codeLocation = (mavenProject ? 'java' : 'groovy')
|
String codeLocation = (mavenProject ? 'java' : 'groovy')
|
||||||
hasFile("src/main/$codeLocation/com/example/${expectedApplicationName}.groovy",
|
String packageName = expectedPackageName.replace('.', '/')
|
||||||
"src/test/$codeLocation/com/example/${expectedApplicationName}Tests.groovy",
|
hasFile("src/main/$codeLocation/$packageName/${expectedApplicationName}.groovy",
|
||||||
|
"src/test/$codeLocation/$packageName/${expectedApplicationName}Tests.groovy",
|
||||||
'src/main/resources/application.properties')
|
'src/main/resources/application.properties')
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectAssert isGroovyProject() {
|
ProjectAssert isGroovyProject() {
|
||||||
isGroovyProject(DEFAULT_APPLICATION_NAME)
|
isGroovyProject(DEFAULT_PACKAGE_NAME, DEFAULT_APPLICATION_NAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectAssert isJavaWarProject(String expectedApplicationName) {
|
ProjectAssert isJavaWarProject(String expectedApplicationName) {
|
||||||
isJavaProject(expectedApplicationName).hasStaticAndTemplatesResources(true)
|
isJavaProject(DEFAULT_PACKAGE_NAME, expectedApplicationName)
|
||||||
|
.hasStaticAndTemplatesResources(true)
|
||||||
.hasFile('src/main/java/com/example/ServletInitializer.java')
|
.hasFile('src/main/java/com/example/ServletInitializer.java')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.spring.initializr.web
|
package io.spring.initializr.web
|
||||||
|
|
||||||
|
import io.spring.initializr.test.ProjectAssert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
import org.springframework.http.HttpEntity
|
import org.springframework.http.HttpEntity
|
||||||
@@ -50,7 +51,7 @@ class MainControllerEnvIntegrationTests extends AbstractInitializrControllerInte
|
|||||||
@Test
|
@Test
|
||||||
void generateProjectWithInvalidName() {
|
void generateProjectWithInvalidName() {
|
||||||
downloadZip('/starter.zip?style=data-jpa&name=Invalid')
|
downloadZip('/starter.zip?style=data-jpa&name=Invalid')
|
||||||
.isJavaProject('FooBarApplication')
|
.isJavaProject(ProjectAssert.DEFAULT_PACKAGE_NAME, 'FooBarApplication')
|
||||||
.isMavenProject()
|
.isMavenProject()
|
||||||
.hasStaticAndTemplatesResources(false).pomAssert()
|
.hasStaticAndTemplatesResources(false).pomAssert()
|
||||||
.hasDependenciesCount(2)
|
.hasDependenciesCount(2)
|
||||||
|
@@ -17,13 +17,16 @@
|
|||||||
package io.spring.initializr.web
|
package io.spring.initializr.web
|
||||||
|
|
||||||
import geb.Browser
|
import geb.Browser
|
||||||
|
import io.spring.initializr.test.ProjectAssert
|
||||||
import io.spring.initializr.web.test.HomePage
|
import io.spring.initializr.web.test.HomePage
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import org.openqa.selenium.Keys
|
||||||
import org.openqa.selenium.WebDriver
|
import org.openqa.selenium.WebDriver
|
||||||
import org.openqa.selenium.firefox.FirefoxDriver
|
import org.openqa.selenium.firefox.FirefoxDriver
|
||||||
import org.openqa.selenium.firefox.FirefoxProfile
|
import org.openqa.selenium.firefox.FirefoxProfile
|
||||||
|
import org.openqa.selenium.interactions.Actions
|
||||||
|
|
||||||
import org.springframework.test.context.ActiveProfiles
|
import org.springframework.test.context.ActiveProfiles
|
||||||
|
|
||||||
@@ -39,6 +42,9 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
private File downloadDir
|
private File downloadDir
|
||||||
private WebDriver driver
|
private WebDriver driver
|
||||||
private Browser browser
|
private Browser browser
|
||||||
|
private Actions actions
|
||||||
|
|
||||||
|
private def enterAction
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
void setup() {
|
void setup() {
|
||||||
@@ -52,8 +58,11 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
"application/zip,application/x-compress,application/octet-stream");
|
"application/zip,application/x-compress,application/octet-stream");
|
||||||
|
|
||||||
driver = new FirefoxDriver(fxProfile);
|
driver = new FirefoxDriver(fxProfile);
|
||||||
|
actions = new Actions(driver)
|
||||||
browser = new Browser()
|
browser = new Browser()
|
||||||
browser.driver = driver
|
browser.driver = driver
|
||||||
|
|
||||||
|
enterAction = actions.sendKeys(Keys.ENTER).build()
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -64,26 +73,126 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void createDefaultJavaProject() {
|
void createSimpleProject() {
|
||||||
toHome {
|
toHome {
|
||||||
page.generateProject.click()
|
page.generateProject.click()
|
||||||
at HomePage
|
at HomePage
|
||||||
def projectAssert = zipProjectAssert(from('demo.zip'))
|
assertSimpleProject()
|
||||||
projectAssert.hasBaseDir("demo").isMavenProject().isJavaProject()
|
.isMavenProject()
|
||||||
.hasStaticAndTemplatesResources(false)
|
.pomAssert()
|
||||||
.pomAssert().hasDependenciesCount(2)
|
.hasDependenciesCount(2)
|
||||||
.hasSpringBootStarterRootDependency().hasSpringBootStarterTest()
|
.hasSpringBootStarterRootDependency()
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void createDefaultGroovyProject() {
|
void createSimpleProjectWithGradle() {
|
||||||
toHome {
|
toHome {
|
||||||
|
page.type = 'gradle-project'
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
assertSimpleProject()
|
||||||
|
.isGradleProject()
|
||||||
|
.gradleBuildAssert()
|
||||||
|
.contains("compile('org.springframework.boot:spring-boot-starter')")
|
||||||
|
.contains("testCompile('org.springframework.boot:spring-boot-starter-test')")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createSimpleProjectWithDifferentBootVersion() {
|
||||||
|
toHome {
|
||||||
|
page.bootVersion = '1.0.2.RELEASE'
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
assertSimpleProject()
|
||||||
|
.isMavenProject()
|
||||||
|
.pomAssert()
|
||||||
|
.hasBootVersion('1.0.2.RELEASE')
|
||||||
|
.hasDependenciesCount(2)
|
||||||
|
.hasSpringBootStarterRootDependency()
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createSimpleProjectWithDependencies() {
|
||||||
|
toHome {
|
||||||
|
selectDependency(page, 'Data JPA')
|
||||||
|
selectDependency(page, 'Security')
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
assertSimpleProject()
|
||||||
|
.isMavenProject()
|
||||||
|
.pomAssert()
|
||||||
|
.hasDependenciesCount(3)
|
||||||
|
.hasSpringBootStarterDependency('data-jpa')
|
||||||
|
.hasSpringBootStarterDependency('security')
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void selectDependencyTwiceRemovesIt() {
|
||||||
|
toHome {
|
||||||
|
selectDependency(page, 'Data JPA')
|
||||||
|
selectDependency(page, 'Security')
|
||||||
|
selectDependency(page, 'Security') // remove
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
assertSimpleProject()
|
||||||
|
.isMavenProject()
|
||||||
|
.pomAssert()
|
||||||
|
.hasDependenciesCount(2)
|
||||||
|
.hasSpringBootStarterDependency('data-jpa')
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ProjectAssert assertSimpleProject() {
|
||||||
|
zipProjectAssert(from('demo.zip'))
|
||||||
|
.hasBaseDir("demo")
|
||||||
|
.isJavaProject()
|
||||||
|
.hasStaticAndTemplatesResources(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void customArtifactIdUpdateNameAutomatically() {
|
||||||
|
toHome {
|
||||||
|
page.groupId = 'org.foo'
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
zipProjectAssert(from('demo.zip'))
|
||||||
|
.hasBaseDir("demo")
|
||||||
|
.isJavaProject('org.foo', 'DemoApplication')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void customGroupIdIdUpdatePackageAutomatically() {
|
||||||
|
toHome {
|
||||||
|
page.artifactId = 'my-project'
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
zipProjectAssert(from('my-project.zip'))
|
||||||
|
.hasBaseDir("my-project")
|
||||||
|
.isJavaProject('com.example', 'MyProjectApplication')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createGroovyProject() {
|
||||||
|
toHome {
|
||||||
|
page.advanced.click()
|
||||||
page.language = 'groovy'
|
page.language = 'groovy'
|
||||||
page.generateProject.click()
|
page.generateProject.click()
|
||||||
at HomePage
|
at HomePage
|
||||||
def projectAssert = zipProjectAssert(from('demo.zip'))
|
def projectAssert = zipProjectAssert(from('demo.zip'))
|
||||||
projectAssert.hasBaseDir('demo').isMavenProject().isGroovyProject()
|
projectAssert.hasBaseDir('demo')
|
||||||
|
.isMavenProject()
|
||||||
|
.isGroovyProject()
|
||||||
.hasStaticAndTemplatesResources(false)
|
.hasStaticAndTemplatesResources(false)
|
||||||
.pomAssert().hasDependenciesCount(3)
|
.pomAssert().hasDependenciesCount(3)
|
||||||
.hasSpringBootStarterRootDependency().hasSpringBootStarterTest()
|
.hasSpringBootStarterRootDependency().hasSpringBootStarterTest()
|
||||||
@@ -92,76 +201,16 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void createJavaProjectWithCustomDefaults() {
|
|
||||||
toHome {
|
|
||||||
page.groupId = 'com.acme'
|
|
||||||
page.artifactId = 'foo-bar'
|
|
||||||
page.name = 'My project'
|
|
||||||
page.description = 'A description for my project'
|
|
||||||
page.dependency('web').click()
|
|
||||||
page.dependency('data-jpa').click()
|
|
||||||
page.generateProject.click()
|
|
||||||
at HomePage
|
|
||||||
def projectAssert = zipProjectAssert(from('foo-bar.zip'))
|
|
||||||
projectAssert.hasBaseDir("foo-bar").isMavenProject()
|
|
||||||
.isJavaProject('MyProjectApplication')
|
|
||||||
.hasStaticAndTemplatesResources(true)
|
|
||||||
.pomAssert().hasGroupId('com.acme').hasArtifactId('foo-bar')
|
|
||||||
.hasName('My project').hasDescription('A description for my project')
|
|
||||||
.hasSpringBootStarterDependency('web')
|
|
||||||
.hasSpringBootStarterDependency('data-jpa')
|
|
||||||
.hasSpringBootStarterTest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void createGroovyProjectWithCustomDefaults() {
|
|
||||||
toHome {
|
|
||||||
page.language = 'groovy'
|
|
||||||
page.groupId = 'org.biz'
|
|
||||||
page.artifactId = 'groovy-project'
|
|
||||||
page.name = 'My Groovy project'
|
|
||||||
page.description = 'A description for my Groovy project'
|
|
||||||
page.dependency('web').click()
|
|
||||||
page.dependency('data-jpa').click()
|
|
||||||
page.generateProject.click()
|
|
||||||
at HomePage
|
|
||||||
def projectAssert = zipProjectAssert(from('groovy-project.zip'))
|
|
||||||
projectAssert.hasBaseDir("groovy-project").isMavenProject()
|
|
||||||
.isGroovyProject('MyGroovyProjectApplication')
|
|
||||||
.hasStaticAndTemplatesResources(true)
|
|
||||||
.pomAssert().hasGroupId('org.biz').hasArtifactId('groovy-project')
|
|
||||||
.hasName('My Groovy project').hasDescription('A description for my Groovy project')
|
|
||||||
.hasSpringBootStarterDependency('web')
|
|
||||||
.hasSpringBootStarterDependency('data-jpa')
|
|
||||||
.hasSpringBootStarterTest()
|
|
||||||
.hasDependency('org.codehaus.groovy', 'groovy')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void createSimpleGradleProject() {
|
|
||||||
toHome {
|
|
||||||
page.type = 'gradle-project'
|
|
||||||
page.dependency('data-jpa').click()
|
|
||||||
page.generateProject.click()
|
|
||||||
at HomePage
|
|
||||||
def projectAssert = zipProjectAssert(from('demo.zip'))
|
|
||||||
projectAssert.hasBaseDir("demo").isGradleProject()
|
|
||||||
.isJavaProject()
|
|
||||||
.hasStaticAndTemplatesResources(false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void createWarProject() {
|
void createWarProject() {
|
||||||
toHome {
|
toHome {
|
||||||
|
page.advanced.click()
|
||||||
page.packaging = 'war'
|
page.packaging = 'war'
|
||||||
page.generateProject.click()
|
page.generateProject.click()
|
||||||
at HomePage
|
at HomePage
|
||||||
def projectAssert = zipProjectAssert(from('demo.zip'))
|
def projectAssert = zipProjectAssert(from('demo.zip'))
|
||||||
projectAssert.hasBaseDir("demo").isMavenProject()
|
projectAssert.hasBaseDir("demo")
|
||||||
|
.isMavenProject()
|
||||||
.isJavaWarProject()
|
.isJavaWarProject()
|
||||||
.pomAssert().hasPackaging('war').hasDependenciesCount(3)
|
.pomAssert().hasPackaging('war').hasDependenciesCount(3)
|
||||||
.hasSpringBootStarterDependency('web') // Added with war packaging
|
.hasSpringBootStarterDependency('web') // Added with war packaging
|
||||||
@@ -170,9 +219,70 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createJavaProjectWithCustomDefaults() {
|
||||||
|
toHome {
|
||||||
|
page.groupId = 'com.acme'
|
||||||
|
page.artifactId = 'foo-bar'
|
||||||
|
page.advanced.click()
|
||||||
|
page.name = 'My project'
|
||||||
|
page.description = 'A description for my project'
|
||||||
|
page.packageName = 'com.example.foo'
|
||||||
|
page.dependency('web').click()
|
||||||
|
page.dependency('data-jpa').click()
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
def projectAssert = zipProjectAssert(from('foo-bar.zip'))
|
||||||
|
projectAssert.hasBaseDir("foo-bar")
|
||||||
|
.isMavenProject()
|
||||||
|
.isJavaProject('com.example.foo', 'MyProjectApplication')
|
||||||
|
.hasStaticAndTemplatesResources(true)
|
||||||
|
.pomAssert()
|
||||||
|
.hasGroupId('com.acme')
|
||||||
|
.hasArtifactId('foo-bar')
|
||||||
|
.hasName('My project')
|
||||||
|
.hasDescription('A description for my project')
|
||||||
|
.hasSpringBootStarterDependency('web')
|
||||||
|
.hasSpringBootStarterDependency('data-jpa')
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createGroovyProjectWithCustomDefaults() {
|
||||||
|
toHome {
|
||||||
|
page.groupId = 'org.biz'
|
||||||
|
page.artifactId = 'groovy-project'
|
||||||
|
page.advanced.click()
|
||||||
|
page.language = 'groovy'
|
||||||
|
page.name = 'My Groovy project'
|
||||||
|
page.description = 'A description for my Groovy project'
|
||||||
|
page.packageName = 'com.example.biz'
|
||||||
|
page.dependency('web').click()
|
||||||
|
page.dependency('data-jpa').click()
|
||||||
|
page.generateProject.click()
|
||||||
|
at HomePage
|
||||||
|
def projectAssert = zipProjectAssert(from('groovy-project.zip'))
|
||||||
|
projectAssert.hasBaseDir("groovy-project")
|
||||||
|
.isMavenProject()
|
||||||
|
.isGroovyProject('com.example.biz', 'MyGroovyProjectApplication')
|
||||||
|
.hasStaticAndTemplatesResources(true)
|
||||||
|
.pomAssert()
|
||||||
|
.hasGroupId('org.biz')
|
||||||
|
.hasArtifactId('groovy-project')
|
||||||
|
.hasName('My Groovy project')
|
||||||
|
.hasDescription('A description for my Groovy project')
|
||||||
|
.hasSpringBootStarterDependency('web')
|
||||||
|
.hasSpringBootStarterDependency('data-jpa')
|
||||||
|
.hasSpringBootStarterTest()
|
||||||
|
.hasDependency('org.codehaus.groovy', 'groovy')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void dependencyHiddenAccordingToRange() {
|
void dependencyHiddenAccordingToRange() {
|
||||||
toHome { // bur: [1.1.4.RELEASE,1.2.0.BUILD-SNAPSHOT)
|
toHome { // bur: [1.1.4.RELEASE,1.2.0.BUILD-SNAPSHOT)
|
||||||
|
page.advanced.click()
|
||||||
page.dependency('org.acme:bur').displayed == true
|
page.dependency('org.acme:bur').displayed == true
|
||||||
|
|
||||||
page.bootVersion = '1.0.2.RELEASE'
|
page.bootVersion = '1.0.2.RELEASE'
|
||||||
@@ -190,6 +300,7 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
@Test
|
@Test
|
||||||
void dependencyUncheckedWhenHidden() {
|
void dependencyUncheckedWhenHidden() {
|
||||||
toHome {
|
toHome {
|
||||||
|
page.advanced.click()
|
||||||
page.dependency('org.acme:bur').value() == 'org.acme:bur'
|
page.dependency('org.acme:bur').value() == 'org.acme:bur'
|
||||||
page.bootVersion = '1.0.2.RELEASE'
|
page.bootVersion = '1.0.2.RELEASE'
|
||||||
page.dependency('org.acme:bur').displayed == false
|
page.dependency('org.acme:bur').displayed == false
|
||||||
@@ -207,6 +318,11 @@ class ProjectGenerationSmokeTests extends AbstractInitializrControllerIntegratio
|
|||||||
browser
|
browser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private selectDependency(def page, String text) {
|
||||||
|
page.autocomplete = text
|
||||||
|
enterAction.perform()
|
||||||
|
}
|
||||||
|
|
||||||
private byte[] from(String fileName) {
|
private byte[] from(String fileName) {
|
||||||
getArchive(fileName).bytes
|
getArchive(fileName).bytes
|
||||||
}
|
}
|
||||||
|
@@ -28,8 +28,15 @@ class HomePage extends Page {
|
|||||||
|
|
||||||
static at = { title == 'Spring Initializr' }
|
static at = { title == 'Spring Initializr' }
|
||||||
static content = {
|
static content = {
|
||||||
|
advanced { $('.tofullversion a') }
|
||||||
|
simple { $('tosimpleversion a') }
|
||||||
|
|
||||||
|
// Simple view
|
||||||
groupId { $('form').groupId() }
|
groupId { $('form').groupId() }
|
||||||
artifactId { $('form').artifactId() }
|
artifactId { $('form').artifactId() }
|
||||||
|
autocomplete { $('form').autocomplete() }
|
||||||
|
|
||||||
|
// Advanced view
|
||||||
name { $('form').name() }
|
name { $('form').name() }
|
||||||
description { $('form').description() }
|
description { $('form').description() }
|
||||||
packageName { $('form').packageName() }
|
packageName { $('form').packageName() }
|
||||||
|
Reference in New Issue
Block a user