forked from shaneriley/jquery_remember_state
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.js
95 lines (83 loc) · 3.23 KB
/
tests.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
if (!("prop" in $.fn)) { $.fn.prop = $.fn.attr; }
var o = {
objName: "remember_state_test_data"
};
var setup = function(opts) {
opts = opts || {};
return $("#qunit-fixture").find("form").rememberState($.extend(true, {}, o, opts));
};
var triggerUnload = function() {
$(window).trigger("unload");
};
test("Requirements", 3, function() {
ok($, "$");
ok($.fn.rememberState, "$.fn.rememberState");
ok((typeof window.localStorage.setItem === "function"), "localStorage supported");
});
module("rememberState", {
setup: function() {
delete localStorage[o.objName];
}
});
test("It should have no data in localStorage", function() {
ok(!localStorage[o.objName]);
});
test("Value in text field should save state", function() {
var $form = setup();
$form.find("#first_name").val("Shane");
triggerUnload();
ok(/Shane/.test(JSON.parse(localStorage.getItem(o.objName))[0].value), "First name saved");
$form.find("#last_name").val("Riley");
ok(!(/Riley/.test(JSON.parse(localStorage.getItem(o.objName))[0].value)), "Last name not saved");
});
test("Value in radio should save state", function() {
var $form = setup();
$form.find("#gender_male").prop("checked", true);
triggerUnload();
ok(/Male/.test(localStorage[o.objName]), "Gender saved");
$form.find("#gender_female").prop("checked", true);
ok(!(/Female/.test(localStorage[o.objName])), "Gender not saved");
});
test("Value in select box should save state", function() {
var $form = setup();
$form.find("#marital_status option:contains(Married)").prop("selected", true);
triggerUnload();
ok(/Married/.test(localStorage[o.objName]), "Marital status saved");
$form.find("#marital_status option:contains(Single)").prop("selected", true);
ok(!(/Single/.test(localStorage[0])), "Marital status not saved");
});
test("Value in checkbox should save state", function() {
var $form = setup();
$form.find("[name=video_games]").prop("checked", true);
triggerUnload();
ok(/Video/.test(localStorage[o.objName]), "Video games saved");
$form.find("[name=dendrophilia]").prop("checked", true);
ok(!(/Dendro/.test(localStorage[o.objName])), "Dendrophilia not saved");
});
test("Multiselects restore state", function() {
var $form = setup(),
$opts = $form.find("[multiple] option");
$opts.eq(0).prop("selected", true);
$opts.eq($opts.length - 1).prop("selected", true);
triggerUnload();
ok(/m_w/.test(localStorage[o.objName]), "Multiple selected options saved");
ok(!(/m_m/.test(localStorage[o.objName])), "Not selected option not saved");
});
test("Value in datetime should save state", function() {
var $form = setup();
$form.find("#datetime").val("1901-01-01T06:00:00");
triggerUnload();
ok(/1901-01-01T06:00:00/.test(localStorage[o.objName]), "Datetime saved");
});
test("Value in datetime-local should save state", function() {
var $form = setup();
$form.find("#datetime-local").val("1901-01-01T06:00:00-06:00");
triggerUnload();
ok(/1901-01-01T06:00:00-06:00/.test(localStorage[o.objName]), "Datetime-local saved");
});
test("Gender field should be ignored", function() {
var $form = setup({ ignore: ["gender"] });
$form.find("#gender_female").attr("checked", true);
triggerUnload();
ok(!/Female/.test(localStorage[o.objName]), "Gender not saved");
});