Skip to content

Commit

Permalink
Merge branch 'form_tests' into form_tests_theress
Browse files Browse the repository at this point in the history
  • Loading branch information
masone committed Sep 23, 2015
2 parents c861ee8 + f9c0614 commit acdc4bf
Show file tree
Hide file tree
Showing 2 changed files with 175 additions and 0 deletions.
157 changes: 157 additions & 0 deletions test/unit/pjax.js
Original file line number Diff line number Diff line change
Expand Up @@ -1099,4 +1099,161 @@ if ($.support.pjax) {
equal(frame.location.search, "")
})
})

asyncTest("preserves input value when going back and forth", 1, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var field = frame.$("input[type=text]")

if (count == 1) {
// Form
field.val("changed")
frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
equal(field.val(), "changed", "Field value is preserved")
start()
}
})
})

asyncTest("preserves textarea value when going back and forth", 1, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var field = frame.$("textarea")

if (count == 1) {
// Form
field.val("changed")
frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
equal(field.val(), "changed", "Field value is preserved")
start()
}
})
})

asyncTest("preserves checkbox value when going back and forth", 1, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var field = frame.$("input[type=checkbox]")

if (count == 1) {
// Form
field.prop("checked", true)
frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
ok(field.prop("checked"), "Field value is preserved")
start()
}
})
})

asyncTest("preserves checkbox value when going back and forth", 1, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var field = frame.$("input[type=radio]")

if (count == 1) {
// Form
field.prop("checked", true)
frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
ok(field.prop("checked"), "Field value is preserved")
start()
}
})
})

asyncTest("preserves select value when going back and forth", 1, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var option = frame.$("select option:last")

if (count == 1) {
// Form
option.prop("selected", true)

frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
//var option = frame.$("select option:last")
equal(option.prop("selected"), true, "Field value is preserved")
start()
}
})
})

asyncTest("preserves multiple select value when going back and forth", 3, function() {
var count = 0
var frame = this.frame

frame.$.pjax({url: "form.html", container: "#main"})

frame.$("#main").on("pjax:end", function() {
count++
var field = frame.$("select").prop("multiple", true)
var options = field.find("option")

if (count == 1) {
// Form
options.prop("selected", true)

frame.history.back()
} else if (count == 2) {
// Hello
frame.history.forward()
} else if (count == 3) {
// Form
options.each(function(){
equal($(this).prop("selected"), true, "Field value is preserved")
})
start()
}
})
})

}
18 changes: 18 additions & 0 deletions test/views/form.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<%= title 'Form' %>

<form action="env.html" method="GET">
<input type="text" value="foo">
<textarea>foo</textarea>

<input type="checkbox" value="foo">
<input type="radio" value="foo">

<select>
<option value="foo">foo</option>
<option value="bar">bar</option>
<option value="baz">baz</option>
</select>

</form>

<script type="text/javascript">window.parent.iframeLoad(window)</script>

0 comments on commit acdc4bf

Please sign in to comment.