Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F884900
QueryReadStore.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Subscribers
None
QueryReadStore.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.data.tests.stores.QueryReadStore"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.data.tests.stores.QueryReadStore"
]
=
true
;
dojo
.
provide
(
"dojox.data.tests.stores.QueryReadStore"
);
dojo
.
require
(
"dojox.data.QueryReadStore"
);
dojo
.
require
(
"dojo.data.api.Read"
);
//dojo.require("dojox.testing.DocTest");
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
=
function
(){
return
new
dojox
.
data
.
QueryReadStore
({
url
:
dojo
.
moduleUrl
(
"dojox.data.tests"
,
"stores/QueryReadStore.php"
).
toString
(),
doClientPaging
:
true
// "true" is actually also the default, but make sure :-).
});
};
tests
.
register
(
"dojox.data.tests.stores.QueryReadStore"
,
[
/*
function testDocTests(t) {
// summary:
// Run all the doc comments.
var doctest = new dojox.testing.DocTest();
doctest.run("dojox.data.QueryReadStore");
t.assertTrue(doctest.errors.length==0);
},
*/
function
testReadApi_getValue
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
// The good cases.
t
.
assertEqual
(
"Alabama"
,
store
.
getValue
(
item
,
"name"
));
t
.
assertEqual
(
"<img src='images/Alabama.jpg'/>Alabama"
,
store
.
getValue
(
item
,
"label"
));
t
.
assertEqual
(
"AL"
,
store
.
getValue
(
item
,
"abbreviation"
));
// Test the defaultValue cases (the third paramter).
t
.
assertEqual
(
"default value"
,
store
.
getValue
(
item
,
"NAME"
,
"default value"
));
// TODO Test for null somehow ...
// Read api says: Returns null if and only if null was explicitly set as the attribute value.
// According to Read-API getValue() an exception is thrown when
// the item is not an item or when the attribute is not a string.
t
.
assertError
(
Error
,
store
,
"getValue"
,
[
"not an item"
,
"NOT THERE"
]);
t
.
assertError
(
Error
,
store
,
"getValue"
,
[
item
,
{}]);
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alabama"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_getValues
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
// The good cases.
t
.
assertEqual
([
"Alabama"
],
store
.
getValues
(
item
,
"name"
));
t
.
assertEqual
([
"<img src='images/Alabama.jpg'/>Alabama"
],
store
.
getValues
(
item
,
"label"
));
t
.
assertEqual
([
"AL"
],
store
.
getValues
(
item
,
"abbreviation"
));
// TODO Test for null somehow ...
// Read api says: Returns null if and only if null was explicitly set as the attribute value.
// Test for not-existing attributes without defaultValues and invalid items.
// TODO
//dojox.data.tests.stores.QueryReadStore.assertError(dojox.data.QueryReadStore.InvalidAttributeError, store, "getValues", [item, "NOT THERE"]);
//dojox.data.tests.stores.QueryReadStore.assertError(dojox.data.QueryReadStore.InvalidItemError, store, "getValues", ["not an item", "NOT THERE"]);
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alabama"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_getAttributes
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
// The good case(s).
t
.
assertEqual
([
'name'
,
'label'
,
'abbreviation'
],
store
.
getAttributes
(
item
));
t
.
assertError
(
dojox
.
data
.
QueryReadStore
.
InvalidItemError
,
store
,
"getAttributes"
,
[{}]);
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alabama"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_hasAttribute
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
// The positive cases.
t
.
assertEqual
(
true
,
store
.
hasAttribute
(
item
,
"name"
));
t
.
assertEqual
(
true
,
store
.
hasAttribute
(
item
,
"label"
));
t
.
assertEqual
(
true
,
store
.
hasAttribute
(
item
,
"abbreviation"
));
// Make sure attribute case doesnt matter.
t
.
assertEqual
(
false
,
store
.
hasAttribute
(
item
,
"NAME"
));
t
.
assertEqual
(
false
,
store
.
hasAttribute
(
item
,
"Name"
));
t
.
assertEqual
(
false
,
store
.
hasAttribute
(
item
,
"Label"
));
// Pass in an invalid item.
t
.
assertEqual
(
false
,
store
.
hasAttribute
({},
"abbreviation"
));
// pass in something that looks like the item with the attribute.
t
.
assertEqual
(
false
,
store
.
hasAttribute
({
name
:
"yo"
},
"name"
));
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alaska"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_containsValue
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
t
.
assertTrue
(
store
.
containsValue
(
item
,
"name"
,
"Alaska"
));
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alaska"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_isItem
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
// The good case.
t
.
assertEqual
(
true
,
store
.
isItem
(
items
[
0
]));
// Try a pure object.
t
.
assertEqual
(
false
,
store
.
isItem
({}));
// Try to look like an item.
t
.
assertEqual
(
false
,
store
.
isItem
({
name
:
"Alaska"
,
label
:
"Alaska"
,
abbreviation
:
"AK"
}));
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alaska"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
function
testReadApi_isItemLoaded
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
var
item
=
items
[
0
];
// The good case(s).
t
.
assertTrue
(
store
.
isItemLoaded
(
item
));
d
.
callback
(
true
);
}
store
.
fetch
({
query
:
{
q
:
"Alabama"
},
onComplete
:
onComplete
});
return
d
;
//Object
},
//function testReadApi_loadItem(t){
// // summary:
// // description:
// t.assertTrue(false);
//},
function
testReadApi_fetch_all
(
t
){
// summary:
// Simple test of fetching all items.
// description:
// Simple test of fetching all items.
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
)
{
t
.
assertEqual
(
8
,
items
.
length
);
d
.
callback
(
true
);
}
function
onError
(
error
,
request
)
{
d
.
errback
(
error
);
}
store
.
fetch
({
query
:
{
q
:
"a"
},
onComplete
:
onComplete
,
onError
:
onError
});
return
d
;
//Object
},
function
testReadApi_fetch_one
(
t
){
// summary:
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
){
t
.
assertEqual
(
1
,
items
.
length
);
d
.
callback
(
true
);
}
function
onError
(
error
,
request
)
{
d
.
errback
(
error
);
}
store
.
fetch
({
query
:
{
q
:
"Alaska"
},
onComplete
:
onComplete
,
onError
:
onError
});
return
d
;
//Object
},
function
testReadApi_fetch_client_paging
(
t
){
// summary:
// Lets test that paging on the same request does not trigger
// server requests.
// description:
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
lastRequestHash
=
null
;
var
firstItems
=
[];
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
)
{
t
.
assertEqual
(
5
,
items
.
length
);
lastRequestHash
=
store
.
lastRequestHash
;
firstItems
=
items
;
// Do the next request AFTER the previous one, so we are sure its sequential.
// We need to be sure so we can compare to the data from the first request.
function
onComplete1
(
items
,
request
)
{
t
.
assertEqual
(
5
,
items
.
length
);
t
.
assertEqual
(
lastRequestHash
,
store
.
lastRequestHash
);
t
.
assertEqual
(
firstItems
[
1
],
items
[
0
]);
d
.
callback
(
true
);
}
req
.
start
=
1
;
req
.
onComplete
=
onComplete1
;
store
.
fetch
(
req
);
}
function
onError
(
error
,
request
)
{
d
.
errback
(
error
);
}
var
req
=
{
query
:
{
q
:
"a"
},
start
:
0
,
count
:
5
,
onComplete
:
onComplete
,
onError
:
onError
};
store
.
fetch
(
req
);
return
d
;
//Object
},
function
testReadApi_fetch_server_paging
(
t
)
{
// Verify that the paging on the server side does work.
// This is the test for http://trac.dojotoolkit.org/ticket/4761
//
// How? We request 10 items from the server, start=0, count=10.
// The second request requests 5 items: start=5, count=5 and those
// 5 items should have the same values as the last 5 of the first
// request.
// This tests if the server side paging does work.
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
lastRequestHash
=
null
;
var
d
=
new
doh
.
Deferred
();
function
onComplete
(
items
,
request
)
{
t
.
assertEqual
(
10
,
items
.
length
);
lastRequestHash
=
store
.
lastRequestHash
;
firstItems
=
items
;
// Do the next request AFTER the previous one, so we are sure its sequential.
// We need to be sure so we can compare to the data from the first request.
function
onComplete1
(
items
,
request
)
{
t
.
assertEqual
(
5
,
items
.
length
);
// Compare the hash of the last request, they must be different,
// since another server request was issued.
t
.
assertTrue
(
lastRequestHash
!=
store
.
lastRequestHash
);
t
.
assertEqual
(
store
.
getValue
(
firstItems
[
5
],
"name"
),
store
.
getValue
(
items
[
0
],
"name"
));
t
.
assertEqual
(
store
.
getValue
(
firstItems
[
6
],
"name"
),
store
.
getValue
(
items
[
1
],
"name"
));
t
.
assertEqual
(
store
.
getValue
(
firstItems
[
7
],
"name"
),
store
.
getValue
(
items
[
2
],
"name"
));
t
.
assertEqual
(
store
.
getValue
(
firstItems
[
8
],
"name"
),
store
.
getValue
(
items
[
3
],
"name"
));
t
.
assertEqual
(
store
.
getValue
(
firstItems
[
9
],
"name"
),
store
.
getValue
(
items
[
4
],
"name"
));
d
.
callback
(
true
);
}
// Init a new store, or it will use the old data, since the query has not changed.
store
.
doClientPaging
=
false
;
store
.
fetch
({
start
:
5
,
count
:
5
,
onComplete
:
onComplete1
,
onError
:
onError
});
}
function
onError
(
error
,
request
)
{
d
.
errback
(
error
);
}
store
.
fetch
({
query
:
{},
start
:
0
,
count
:
10
,
onComplete
:
onComplete
,
onError
:
onError
});
return
d
;
//Object
},
function
testReadApi_getFeatures
(
t
)
{
var
store
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
features
=
store
.
getFeatures
();
t
.
assertTrue
(
features
[
"dojo.data.api.Read"
]);
t
.
assertTrue
(
features
[
"dojo.data.api.Identity"
]);
var
count
=
0
;
for
(
i
in
features
){
count
++
;
}
t
.
assertEqual
(
2
,
count
);
},
function
testReadAPI_functionConformance
(
t
){
// summary:
// Simple test read API conformance. Checks to see all declared functions are actual functions on the instances.
// description:
// Simple test read API conformance. Checks to see all declared functions are actual functions on the instances.
var
testStore
=
dojox
.
data
.
tests
.
stores
.
QueryReadStore
.
getStore
();
var
readApi
=
new
dojo
.
data
.
api
.
Read
();
var
passed
=
true
;
for
(
i
in
readApi
){
var
member
=
readApi
[
i
];
//Check that all the 'Read' defined functions exist on the test store.
if
(
typeof
member
===
"function"
){
var
testStoreMember
=
testStore
[
i
];
if
(
!
(
typeof
testStoreMember
===
"function"
)){
console
.
log
(
"Problem with function: ["
+
i
+
"]"
);
passed
=
false
;
break
;
}
}
}
t
.
assertTrue
(
passed
);
}
]
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 11:24 (2 w, 19 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23193
Default Alt Text
QueryReadStore.js (11 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment