Skip to content

Commit

Permalink
Add DateTimeLocalInput
Browse files Browse the repository at this point in the history
  • Loading branch information
mkutz committed Dec 4, 2018
1 parent 58e3e51 commit 311dbfc
Show file tree
Hide file tree
Showing 3 changed files with 142 additions and 0 deletions.
@@ -0,0 +1,42 @@
/*
* Copyright 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package geb.module

import java.time.LocalDateTime

class DateTimeLocalInput extends AbstractInput {

final String inputType = 'datetime-local'

void setDateTime(LocalDateTime dateTime) {
value(dateTime.toString())
}

void setDateTime(String iso8601FormattedDateTime) {
value(iso8601FormattedDateTime)
}

LocalDateTime getDateTime() {
String value = value()
value ? LocalDateTime.parse(value) : null
}

@Override
protected boolean isTypeValid(String type) {
super.isTypeValid(type) || type == "text"
}

}
@@ -0,0 +1,21 @@
/*
* Copyright 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package geb.module

class DateTimeLocalInputBaseSpec extends InputBasedModuleSpec<DateTimeLocalInput> {
final String inputType = 'datetime-local'
final String otherInputType = 'checkbox'
}
@@ -0,0 +1,79 @@
/*
* Copyright 2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package geb.module

import geb.test.GebSpecWithCallbackServer
import geb.test.browsers.Chrome
import geb.test.browsers.RequiresRealBrowser

import java.time.LocalDateTime

@Chrome
@RequiresRealBrowser // due to https://sourceforge.net/p/htmlunit/bugs/1923/
class DateTimeLocalInputSpec extends GebSpecWithCallbackServer {

def setup() {
html {
input(type: 'datetime-local')
}
}

DateTimeLocalInput getInput() {
$("input").module(DateTimeLocalInput)
}

def 'unset'() {
expect:
input.dateTime == null
}

def 'setting using datetime'() {
when:
input.dateTime = dateTime

then:
input.dateTime == dateTime

where:
dateTime = LocalDateTime.now()
}

def 'setting using ISO 8601 string'() {
when:
input.dateTime = dateTime.toString()

then:
input.dateTime == dateTime

where:
dateTime = LocalDateTime.now()
}

def 'updating'() {
when:
input.dateTime = dateTime

and:
input.dateTime = dateTime.plusDays(1)

then:
input.dateTime == dateTime.plusDays(1)

where:
dateTime = LocalDateTime.now()
}

}

0 comments on commit 311dbfc

Please sign in to comment.