Skip to content

Commit

Permalink
JTE fieldset TCK (#900)
Browse files Browse the repository at this point in the history
  • Loading branch information
sdelamo authored Oct 15, 2024
1 parent e8a759f commit a4d3a90
Show file tree
Hide file tree
Showing 73 changed files with 714 additions and 217 deletions.
5 changes: 4 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ managed-soy = "2023-09-13"
org-json = "20231013"
managed-thymeleaf = "3.1.2.RELEASE"
managed-velocity = "2.3"

graal = "24.0.1"

pebble = "3.2.2"
Expand All @@ -45,6 +44,7 @@ managed-handlebars = { module = "com.github.jknack:handlebars", version.ref = "m
managed-jstachio = { module = "io.jstach:jstachio", version.ref = "managed-jstachio" }
managed-jstachio-apt = { module = "io.jstach:jstachio-apt", version.ref = "managed-jstachio" }
managed-jte = { module = "gg.jte:jte", version.ref = "managed-jte" }
managed-jte-native-resources = { module = "gg.jte:jte-native-resources", version.ref = "managed-jte" }
managed-jte-kotlin = { module = "gg.jte:jte-kotlin", version.ref = "managed-jte" }
managed-rocker-runtime = { module = "com.fizzed:rocker-runtime", version.ref = "managed-rocker" }
managed-soy = { module = "com.google.template:soy", version.ref = "managed-soy" }
Expand All @@ -70,3 +70,6 @@ jetbrains-annotations = { module = "org.jetbrains:annotations", version = "24.1.
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
jte = { id = "gg.jte.gradle", version.ref = "managed-jte" }
buildtools-native = { id = "org.graalvm.buildtools.native"}


3 changes: 3 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ include "test-suite-http"
include "test-suite-groovy"
include "test-suite-kotlin"
include "test-suite-thymeleaf-fieldset"
if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_21)) {
include "test-suite-jte-fieldset"
}
include "test-suite-freemarker-fieldset"
include "test-suite-graal:test-suite-graal-common"
include "test-suite-graal:test-suite-graal-freemarker"
Expand Down
23 changes: 23 additions & 0 deletions test-suite-jte-fieldset/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
plugins {
id("io.micronaut.build.internal.views-fieldset-tck")
alias(libs.plugins.jte)
alias(libs.plugins.buildtools.native)
}

dependencies {
annotationProcessor(platform(mn.micronaut.core.bom))
annotationProcessor(mn.micronaut.inject.java)
implementation(platform(mn.micronaut.core.bom))
implementation(projects.micronautViewsJte)
implementation(projects.micronautViewsFieldset)
testImplementation(projects.micronautViewsJte)
jteGenerate(libs.managed.jte.native.resources)
}
graalvmNative.toolchainDetection = true
jte {
sourceDirectory = file("src/test/jte").toPath()
generate()
jteExtension("gg.jte.nativeimage.NativeResourcesExtension")
}
java.sourceCompatibility = JavaVersion.VERSION_21
java.targetCompatibility = JavaVersion.VERSION_21
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.micronaut.views.fields.jte;

import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;

@Suite
@SelectPackages("io.micronaut.views.fields.tck")
@SuiteDisplayName("Fieldset TCK for Jte")
class JteSuite {
}
7 changes: 7 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/errors.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@import java.util.List
@import io.micronaut.views.fields.messages.Message
@param String name
@param List<Message> errors
@for(var error: errors)
<div id="${name}ValidationServerFeedback" class="invalid-feedback">${error.defaultMessage()}</div>
@endfor
83 changes: 83 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/fieldset.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
@import io.micronaut.views.fields.Fieldset
@import io.micronaut.views.fields.elements.InputCheckboxFormElement
@import io.micronaut.views.fields.elements.InputFormElement
@import io.micronaut.views.fields.elements.InputHiddenFormElement
@import io.micronaut.views.fields.elements.InputNumberFormElement
@import io.micronaut.views.fields.elements.InputEmailFormElement
@import io.micronaut.views.fields.elements.InputTelFormElement
@import io.micronaut.views.fields.elements.InputTextFormElement
@import io.micronaut.views.fields.elements.InputUrlFormElement
@import io.micronaut.views.fields.elements.SelectFormElement
@import io.micronaut.views.fields.elements.InputSubmitFormElement
@import io.micronaut.views.fields.elements.InputPasswordFormElement
@import io.micronaut.views.fields.elements.InputDateFormElement
@import io.micronaut.views.fields.elements.InputDateTimeLocalFormElement
@import io.micronaut.views.fields.elements.TextareaFormElement
@import io.micronaut.views.fields.elements.TrixEditorFormElement
@import io.micronaut.views.fields.elements.InputTimeFormElement
@import io.micronaut.views.fields.elements.InputStringFormElement
@import io.micronaut.views.fields.elements.InputFileFormElement

@param Fieldset el
@for(var field : el.fields())
@if(field instanceof InputHiddenFormElement inputHiddenFormElement)
@template.fieldset.inputhidden(inputHiddenFormElement)
@endif
@if(field instanceof InputCheckboxFormElement ||
field instanceof SelectFormElement ||
field instanceof TextareaFormElement ||
field instanceof TrixEditorFormElement ||
field instanceof InputTimeFormElement ||
field instanceof InputDateFormElement ||
field instanceof InputDateTimeLocalFormElement ||
field instanceof InputStringFormElement ||
field instanceof InputNumberFormElement)
<div class="mb-3">
@if(field instanceof InputCheckboxFormElement inputCheckboxFormElement)
@template.fieldset.inputcheckbox(inputCheckboxFormElement)
@endif
@if(field instanceof SelectFormElement selectFormElement)
@template.fieldset.select(selectFormElement)
@endif
@if(field instanceof TextareaFormElement textareaFormElement)
@template.fieldset.textarea(textareaFormElement)
@endif
@if(field instanceof TrixEditorFormElement trixEditorFormElement)
@template.fieldset.trixeditor(trixEditorFormElement)
@endif
@if(field instanceof InputTimeFormElement inputTimeFormElement)
@template.fieldset.inputtime(inputTimeFormElement)
@endif
@if(field instanceof InputDateTimeLocalFormElement inputDateTimeLocalFormElement)
@template.fieldset.inputdatetimelocal(inputDateTimeLocalFormElement)
@endif
@if(field instanceof InputPasswordFormElement inputPasswordFormElement)
@template.fieldset.inputpassword(inputPasswordFormElement)
@endif
@if(field instanceof InputTextFormElement inputTextFormElement)
@template.fieldset.inputtext(inputTextFormElement)
@endif
@if(field instanceof InputNumberFormElement inputNumberFormElement)
@template.fieldset.inputnumber(inputNumberFormElement)
@endif
@if(field instanceof InputEmailFormElement inputEmailFormElement)
@template.fieldset.inputemail(inputEmailFormElement)
@endif
@if(field instanceof InputTelFormElement inputTelFormElement)
@template.fieldset.inputtel(inputTelFormElement)
@endif
@if(field instanceof InputUrlFormElement inputUrlFormElement)
@template.fieldset.inputurl(inputUrlFormElement)
@endif
@if(field instanceof InputDateFormElement inputDateFormElement)
@template.fieldset.inputdate(inputDateFormElement)
@endif
</div>
@endif
@if(field instanceof InputFileFormElement inputFileFormElement)
@template.fieldset.inputfile(inputFileFormElement)
@endif
@if(field instanceof InputSubmitFormElement inputSubmitFormElement)
@template.fieldset.inputsubmit(inputSubmitFormElement)
@endif
@endfor
12 changes: 12 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/form.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@import io.micronaut.views.fields.Form
@param Form form
@if(form.dataturbo() != null)
<form action="${form.action()}" method="${form.method()}" enctype="${form.enctype()}" data-turbo="${form.dataturbo() ? "true": "false"}">
@template.fieldset.fieldset(form.fieldset())
</form>
@else
<form action="${form.action()}" method="${form.method()}" enctype="${form.enctype()}">
@template.fieldset.fieldset(form.fieldset())
</form>
@endif

29 changes: 29 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputcheckbox.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@import io.micronaut.views.fields.elements.InputCheckboxFormElement
@param InputCheckboxFormElement el
@if(el.label() != null && el.checkboxes().size() > 1)
@template.fieldset.label(null, el.label())
@endif
@for(var checkbox : el.checkboxes())
<div class="form-check">
@if(el.hasErrors())
<input type="checkbox"
name="${checkbox.name()}"
value="${checkbox.value()}"
id="${checkbox.id()}"
class="form-check-input is-invalid"
required="${checkbox.required()}"
disabled="${checkbox.disabled()}"
checked="${checkbox.checked()}"/>
@else
<input type="checkbox"
name="${checkbox.name()}"
value="${checkbox.value()}"
id="${checkbox.id()}"
class="form-check-input"
required="${checkbox.required()}"
disabled="${checkbox.disabled()}"
checked="${checkbox.checked()}"/>
@endif
@template.fieldset.label(checkbox.id(), checkbox.label())
</div>
@endfor
29 changes: 29 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputdate.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@import io.micronaut.views.fields.elements.InputDateFormElement
@param InputDateFormElement el
@template.fieldset.label(el.id(), el.label())
@if(el.hasErrors())
<input
type="date"
name="${el.name()}"
value="${el.value() != null ? el.value().toString() : null}"
id="${el.id()}"
min="${el.min() != null ? el.min().toString() : null}"
max="${el.max() != null ? el.max().toString() : null}"
step="${el.step()}"
class="form-control is-invalid"
aria-describedby="${el.name()}ValidationServerFeedback"
required="${el.required()}"
/>
@template.fieldset.errors(el.name(), el.errors())
@else
<input
type="date"
name="${el.name()}"
value="${el.value() != null ? el.value().toString() : null}"
id="${el.id()}"
min="${el.min() != null ? el.min().toString() : null}"
max="${el.max() != null ? el.max().toString() : null}"
step="${el.step()}"
class="form-control"
required="${el.required()}"/>
@endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@import io.micronaut.views.fields.elements.InputDateTimeLocalFormElement
@param InputDateTimeLocalFormElement el
@template.fieldset.label(el.id(), el.label())
@if(el.hasErrors())
<input
type="datetime-local"
name="${el.name()}"
value="${el.value() != null ? el.value().toString() : null}"
id="${el.id()}"
min="${el.min() != null ? el.min().toString() : null}"
max="${el.max() != null ? el.max().toString() : null}"
step="${el.step()}"
class="form-control is-invalid"
aria-describedby="${el.name()}ValidationServerFeedback"
required="${el.required()}"
/>
@template.fieldset.errors(el.name(), el.errors())
@else
<input
type="datetime-local"
name="${el.name()}"
value="${el.value() != null ? el.value().toString() : null}"
id="${el.id()}"
min="${el.min() != null ? el.min().toString() : null}"
max="${el.max() != null ? el.max().toString() : null}"
step="${el.step()}"
class="form-control"
required="${el.required()}"/>
@endif
7 changes: 7 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputemail.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@import io.micronaut.views.fields.elements.InputEmailFormElement
@import io.micronaut.views.fields.elements.InputStringFormElement
@param InputEmailFormElement el
@if(el instanceof InputStringFormElement inputStringFormElement)
@template.fieldset.inputstring("email",inputStringFormElement)
@endif

22 changes: 22 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputfile.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
@import io.micronaut.views.fields.elements.InputFileFormElement
@param InputFileFormElement el
@template.fieldset.label(el.id(), el.label())
@if(el.hasErrors())
<input type="file"
name="${el.name()}"
id="${el.id()}"
accept="${el.accept()}"
class="form-control is-invalid"
aria-describedby="${el.name()}ValidationServerFeedback"
required="${el.required()}"
/>
@template.fieldset.errors(el.name(), el.errors())
@else
<input type="file"
name="${el.name()}"
id="${el.id()}"
accept="${el.accept()}"
class="form-control"
required="${el.required()}"
/>
@endif
3 changes: 3 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputhidden.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@import io.micronaut.views.fields.elements.InputHiddenFormElement
@param InputHiddenFormElement el
<input type="hidden" name="${el.name()}" value="${el.value()}"/>
31 changes: 31 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputnumber.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@import io.micronaut.views.fields.elements.InputNumberFormElement
@param InputNumberFormElement el
@template.fieldset.label(el.id(), el.label())
@if(el.hasErrors())
<input type="number"
name="${el.name()}"
value="${el.value()}"
id="${el.id()}"
min="${el.min()}"
max="${el.max()}"
step="${el.step()}"
placeholder="${el.placeholder()}"
readOnly="${el.readOnly()}"
class="form-control is-invalid"
aria-describedby="${el.name()}ValidationServerFeedback"
required="${el.required()}"/>
@template.fieldset.errors(el.name(), el.errors())
@else
<input type="number"
name="${el.name()}"
value="${el.value()}"
id="${el.id()}"
min="${el.min()}"
max="${el.max()}"
step="${el.step()}"
placeholder="${el.placeholder()}"
readOnly="${el.readOnly()}"
class="form-control"
required="${el.required()}"/>
@endif

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@import io.micronaut.views.fields.elements.InputPasswordFormElement
@import io.micronaut.views.fields.elements.InputStringFormElement
@param InputPasswordFormElement el
@if(el instanceof InputStringFormElement inputStringFormElement)
@template.fieldset.inputstring("password",inputStringFormElement)
@endif

13 changes: 13 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputradio.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@import io.micronaut.views.fields.elements.InputRadioFormElement
@import io.micronaut.views.fields.elements.Radio
@param InputRadioFormElement el
@param Radio radio
<input
type="radio"
name="${el.name()}"
value="${radio.value()}"
id="${radio.id()}"
class="form-check-input"
required="${el.required()}"
disabled="${radio.disabled()}"
checked="${radio.checked()}"/>
8 changes: 8 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputradios.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@import io.micronaut.views.fields.elements.InputRadioFormElement
@param InputRadioFormElement el
@for(var radio : el.buttons())
<div class="form-check">
@template.fieldset.inputradio(el, radio)
@template.fieldset.label(radio.id(), radio.label())
</div>
@endfor
35 changes: 35 additions & 0 deletions test-suite-jte-fieldset/src/test/jte/fieldset/inputstring.jte
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@import io.micronaut.views.fields.elements.InputStringFormElement
@param String type
@param InputStringFormElement el
@template.fieldset.label(el.id(), el.label())
@if(el.hasErrors())
<input
type="${type}"
name="${el.name()}"
value="${el.value()}"
id="${el.id()}"
placeholder="${el.placeholder()}"
pattern="${el.pattern()}"
minlength="${el.minLength()}"
maxlength="${el.maxLength()}"
size="${el.size()}"
readOnly="${el.readOnly()}"
class="form-control is-invalid"
aria-describedby="${el.name()}ValidationServerFeedback"
required="${el.required()}"/>
@template.fieldset.errors(el.name(), el.errors())
@else
<input
type="${type}"
name="${el.name()}"
value="${el.value()}"
id="${el.id()}"
placeholder="${el.placeholder()}"
pattern="${el.pattern()}"
minlength="${el.minLength()}"
maxlength="${el.maxLength()}"
size="${el.size()}"
readOnly="${el.readOnly()}"
class="form-control"
required="${el.required()}"/>
@endif
Loading

0 comments on commit a4d3a90

Please sign in to comment.