Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Romain Courteaud
jio
Commits
e3989e3c
Commit
e3989e3c
authored
Apr 11, 2014
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replicatestorage tests added
parent
94e21721
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
775 additions
and
1 deletion
+775
-1
test/jio.storage/replicatestorage.tests.js
test/jio.storage/replicatestorage.tests.js
+767
-0
test/tests.html
test/tests.html
+3
-0
test/tests.require.js
test/tests.require.js
+5
-1
No files found.
test/jio.storage/replicatestorage.tests.js
0 → 100644
View file @
e3989e3c
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define, RSVP, jIO, fake_storage, module, test, stop, start, deepEqual,
setTimeout, clearTimeout, XMLHttpRequest, window */
(
function
(
dependencies
,
factory
)
{
"
use strict
"
;
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
return
define
(
dependencies
,
factory
);
}
factory
(
RSVP
,
jIO
,
fake_storage
);
}([
"
rsvp
"
,
"
jio
"
,
"
fakestorage
"
,
"
replicatestorage
"
],
function
(
RSVP
,
jIO
,
fake_storage
)
{
"
use strict
"
;
var
all
=
RSVP
.
all
,
chain
=
RSVP
.
resolve
,
Promise
=
RSVP
.
Promise
;
/**
* sleep(delay, [value]): promise< value >
*
* Produces a new promise which will resolve with `value` after `delay`
* milliseconds.
*
* @param {Number} delay The time to sleep.
* @param {Any} [value] The value to resolve.
* @return {Promise} A new promise.
*/
function
sleep
(
delay
,
value
)
{
var
ident
;
return
new
Promise
(
function
(
resolve
)
{
ident
=
setTimeout
(
resolve
,
delay
,
value
);
},
function
()
{
clearTimeout
(
ident
);
});
}
function
jsonClone
(
object
,
replacer
)
{
if
(
object
===
undefined
)
{
return
undefined
;
}
return
JSON
.
parse
(
JSON
.
stringify
(
object
,
replacer
));
}
function
reverse
(
promise
)
{
return
promise
.
then
(
function
(
a
)
{
throw
a
;
},
function
(
e
)
{
return
e
;
});
}
function
orderRowsById
(
a
,
b
)
{
return
a
.
id
>
b
.
id
?
1
:
b
.
id
>
a
.
id
?
-
1
:
0
;
}
module
(
"
Replicate + GID + Local
"
);
test
(
"
Get
"
,
function
()
{
var
shared
=
{},
i
,
jio_list
,
replicate_jio
;
// this test can work with at least 2 sub storages
shared
.
gid_description
=
{
"
type
"
:
"
gid
"
,
"
constraints
"
:
{
"
default
"
:
{
"
identifier
"
:
"
list
"
}
},
"
sub_storage
"
:
null
};
shared
.
storage_description_list
=
[];
for
(
i
=
0
;
i
<
4
;
i
+=
1
)
{
shared
.
storage_description_list
[
i
]
=
jsonClone
(
shared
.
gid_description
);
shared
.
storage_description_list
[
i
].
sub_storage
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
replicate scenario test for get method -
"
+
(
i
+
1
),
"
mode
"
:
"
memory
"
};
}
shared
.
replicate_storage_description
=
{
"
type
"
:
"
replicate
"
,
"
storage_list
"
:
shared
.
storage_description_list
};
shared
.
workspace
=
{};
shared
.
jio_option
=
{
"
workspace
"
:
shared
.
workspace
,
"
max_retry
"
:
0
};
jio_list
=
shared
.
storage_description_list
.
map
(
function
(
description
)
{
return
jIO
.
createJIO
(
description
,
shared
.
jio_option
);
});
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
stop
();
shared
.
modified_date_list
=
[
new
Date
(
"
1995
"
),
new
Date
(
"
2000
"
),
null
,
new
Date
(
"
Invalid Date
"
)
];
shared
.
winner_modified_date
=
shared
.
modified_date_list
[
1
];
function
setFakeStorage
()
{
setFakeStorage
.
original
=
shared
.
storage_description_list
[
0
].
sub_storage
;
shared
.
storage_description_list
[
0
].
sub_storage
=
{
"
type
"
:
"
fake
"
,
"
id
"
:
"
replicate scenario test for get method - 1
"
};
jio_list
[
0
]
=
jIO
.
createJIO
(
shared
.
storage_description_list
[
0
],
shared
.
jio_option
);
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
}
function
unsetFakeStorage
()
{
shared
.
storage_description_list
[
0
].
sub_storage
=
setFakeStorage
.
original
;
jio_list
[
0
]
=
jIO
.
createJIO
(
shared
.
storage_description_list
[
0
],
shared
.
jio_option
);
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
}
function
putSimilarDocuments
()
{
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
post
({
"
identifier
"
:
"
a
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
]
});
}));
}
function
getDocumentNothingToSynchronize
()
{
return
replicate_jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
});
}
function
getDocumentNothingToSynchronizeTest
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
identifier
"
:
"
a
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Get document, nothing to synchronize.
"
);
// check storage state
return
sleep
(
500
).
// possible synchronization in background (should not occur)
then
(
function
()
{
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
});
}));
}).
then
(
function
(
answers
)
{
answers
.
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
identifier
"
:
"
a
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
putDifferentDocuments
()
{
return
all
(
jio_list
.
map
(
function
(
jio
,
i
)
{
return
jio
.
post
({
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
i
]
});
}));
}
function
getDocumentWithSynchronization
()
{
return
replicate_jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
});
}
function
getDocumentWithSynchronizationTest
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Get document, pending synchronization.
"
);
// check storage state
return
sleep
(
500
).
// synchronizing in background
then
(
function
()
{
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
});
}));
}).
then
(
function
(
answers
)
{
answers
.
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
winner_modified_date
.
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
putOneDocument
()
{
return
jio_list
[
1
].
post
({
"
identifier
"
:
"
c
"
,
"
modified
"
:
shared
.
modified_date_list
[
1
]
});
}
function
getDocumentWith404Synchronization
()
{
return
replicate_jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
});
}
function
getDocumentWith404SynchronizationTest
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
,
"
identifier
"
:
"
c
"
,
"
modified
"
:
shared
.
modified_date_list
[
1
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Get document, synchronizing with not found document.
"
);
// check storage state
return
sleep
(
500
).
// synchronizing in background
then
(
function
()
{
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
});
}));
}).
then
(
function
(
answers
)
{
answers
.
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
,
"
identifier
"
:
"
c
"
,
"
modified
"
:
shared
.
winner_modified_date
.
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
c
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
putDifferentDocuments2
()
{
return
all
(
jio_list
.
map
(
function
(
jio
,
i
)
{
return
jio
.
post
({
"
identifier
"
:
"
d
"
,
"
modified
"
:
shared
.
modified_date_list
[
i
]
});
}));
}
function
getDocumentWithUnavailableStorage
()
{
setFakeStorage
();
setTimeout
(
function
()
{
fake_storage
.
commands
[
"
replicate scenario test for get method - 1/allDocs
"
].
error
({
"
status
"
:
0
});
},
100
);
return
replicate_jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
});
}
function
getDocumentWithUnavailableStorageTest
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
identifier
"
:
"
d
"
,
"
modified
"
:
shared
.
modified_date_list
[
1
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Get document, synchronizing with unavailable storage.
"
);
unsetFakeStorage
();
// check storage state
return
sleep
(
500
).
// synchronizing in background
then
(
function
()
{
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
});
}));
}).
then
(
function
(
answers
)
{
deepEqual
(
answers
[
0
],
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
identifier
"
:
"
d
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
answers
.
slice
(
1
).
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
identifier
"
:
"
d
"
,
"
modified
"
:
shared
.
winner_modified_date
.
toJSON
()
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
d
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
unexpectedError
(
error
)
{
if
(
error
instanceof
Error
)
{
deepEqual
([
error
.
name
+
"
:
"
+
error
.
message
,
error
],
"
NO ERROR
"
,
"
Unexpected error
"
);
}
else
{
deepEqual
(
error
,
"
NO ERROR
"
,
"
Unexpected error
"
);
}
}
chain
().
// get without synchronizing anything
then
(
putSimilarDocuments
).
then
(
getDocumentNothingToSynchronize
).
then
(
getDocumentNothingToSynchronizeTest
).
// get with synchronization
then
(
putDifferentDocuments
).
then
(
getDocumentWithSynchronization
).
then
(
getDocumentWithSynchronizationTest
).
// get with 404 synchronization
then
(
putOneDocument
).
then
(
getDocumentWith404Synchronization
).
then
(
getDocumentWith404SynchronizationTest
).
// XXX get with attachment synchronization
// get with unavailable storage
then
(
putDifferentDocuments2
).
then
(
getDocumentWithUnavailableStorage
).
then
(
getDocumentWithUnavailableStorageTest
).
// End of scenario
then
(
null
,
unexpectedError
).
then
(
start
,
start
);
});
test
(
"
Post
"
,
function
()
{
var
shared
=
{},
i
,
jio_list
,
replicate_jio
;
// this test can work with at least 2 sub storages
shared
.
gid_description
=
{
"
type
"
:
"
gid
"
,
"
constraints
"
:
{
"
default
"
:
{
"
identifier
"
:
"
list
"
}
},
"
sub_storage
"
:
null
};
shared
.
storage_description_list
=
[];
for
(
i
=
0
;
i
<
4
;
i
+=
1
)
{
shared
.
storage_description_list
[
i
]
=
jsonClone
(
shared
.
gid_description
);
shared
.
storage_description_list
[
i
].
sub_storage
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
replicate scenario test for post method -
"
+
(
i
+
1
),
"
mode
"
:
"
memory
"
};
}
shared
.
replicate_storage_description
=
{
"
type
"
:
"
replicate
"
,
"
storage_list
"
:
shared
.
storage_description_list
};
shared
.
workspace
=
{};
shared
.
jio_option
=
{
"
workspace
"
:
shared
.
workspace
,
"
max_retry
"
:
0
};
jio_list
=
shared
.
storage_description_list
.
map
(
function
(
description
)
{
return
jIO
.
createJIO
(
description
,
shared
.
jio_option
);
});
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
stop
();
function
setFakeStorage
()
{
setFakeStorage
.
original
=
shared
.
storage_description_list
[
0
].
sub_storage
;
shared
.
storage_description_list
[
0
].
sub_storage
=
{
"
type
"
:
"
fake
"
,
"
id
"
:
"
replicate scenario test for post method - 1
"
};
jio_list
[
0
]
=
jIO
.
createJIO
(
shared
.
storage_description_list
[
0
],
shared
.
jio_option
);
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
}
function
unsetFakeStorage
()
{
shared
.
storage_description_list
[
0
].
sub_storage
=
setFakeStorage
.
original
;
jio_list
[
0
]
=
jIO
.
createJIO
(
shared
.
storage_description_list
[
0
],
shared
.
jio_option
);
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
}
function
createDocument
()
{
return
replicate_jio
.
post
({
"
identifier
"
:
"
a
"
});
}
function
createDocumentTest
(
answer
)
{
deepEqual
(
answer
,
{
"
id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
method
"
:
"
post
"
,
"
result
"
:
"
success
"
,
"
status
"
:
201
,
"
statusText
"
:
"
Created
"
},
"
Post document
"
);
}
function
checkStorageContent
()
{
// check storage state
return
all
(
jio_list
.
map
(
function
(
jio
)
{
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
});
})).
then
(
function
(
answers
)
{
answers
.
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
identifier
"
:
"
a
"
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
createDocumentWithUnavailableStorage
()
{
setFakeStorage
();
setTimeout
(
function
()
{
fake_storage
.
commands
[
"
replicate scenario test for post method - 1/allDocs
"
].
error
({
"
status
"
:
0
});
},
100
);
return
replicate_jio
.
post
({
"
identifier
"
:
"
b
"
});
}
function
createDocumentWithUnavailableStorageTest
(
answer
)
{
deepEqual
(
answer
,
{
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
method
"
:
"
post
"
,
"
result
"
:
"
success
"
,
"
status
"
:
201
,
"
statusText
"
:
"
Created
"
},
"
Post document with unavailable storage
"
);
return
sleep
(
100
);
}
function
checkStorageContent2
()
{
unsetFakeStorage
();
// check storage state
return
all
(
jio_list
.
map
(
function
(
jio
,
i
)
{
if
(
i
===
0
)
{
return
reverse
(
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
}));
}
return
jio
.
get
({
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
});
})).
then
(
function
(
answers
)
{
deepEqual
(
answers
[
0
],
{
"
error
"
:
"
not_found
"
,
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
message
"
:
"
Cannot get document
"
,
"
method
"
:
"
get
"
,
"
reason
"
:
"
missing
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Check storage content
"
);
answers
.
slice
(
1
).
forEach
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
identifier
"
:
"
b
"
},
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
method
"
:
"
get
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Check storage content
"
);
});
});
}
function
unexpectedError
(
error
)
{
if
(
error
instanceof
Error
)
{
deepEqual
([
error
.
name
+
"
:
"
+
error
.
message
,
error
],
"
NO ERROR
"
,
"
Unexpected error
"
);
}
else
{
deepEqual
(
error
,
"
NO ERROR
"
,
"
Unexpected error
"
);
}
}
chain
().
// create a document
then
(
createDocument
).
then
(
createDocumentTest
).
then
(
checkStorageContent
).
// create a document with unavailable storage
then
(
createDocumentWithUnavailableStorage
).
then
(
createDocumentWithUnavailableStorageTest
).
then
(
checkStorageContent2
).
// End of scenario
then
(
null
,
unexpectedError
).
then
(
start
,
start
);
});
test
(
"
AllDocs
"
,
function
()
{
var
shared
=
{},
i
,
jio_list
,
replicate_jio
;
// this test can work with at least 2 sub storages
shared
.
gid_description
=
{
"
type
"
:
"
gid
"
,
"
constraints
"
:
{
"
default
"
:
{
"
identifier
"
:
"
list
"
}
},
"
sub_storage
"
:
null
};
shared
.
storage_description_list
=
[];
for
(
i
=
0
;
i
<
2
;
i
+=
1
)
{
shared
.
storage_description_list
[
i
]
=
jsonClone
(
shared
.
gid_description
);
shared
.
storage_description_list
[
i
].
sub_storage
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
replicate scenario test for allDocs method -
"
+
(
i
+
1
),
"
mode
"
:
"
memory
"
};
}
shared
.
replicate_storage_description
=
{
"
type
"
:
"
replicate
"
,
"
storage_list
"
:
shared
.
storage_description_list
};
shared
.
workspace
=
{};
shared
.
jio_option
=
{
"
workspace
"
:
shared
.
workspace
,
"
max_retry
"
:
0
};
jio_list
=
shared
.
storage_description_list
.
map
(
function
(
description
)
{
return
jIO
.
createJIO
(
description
,
shared
.
jio_option
);
});
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
stop
();
shared
.
modified_date_list
=
[
new
Date
(
"
2000
"
),
new
Date
(
"
1995
"
),
null
,
new
Date
(
"
Invalid Date
"
)
];
function
postSomeDocuments
()
{
return
all
([
jio_list
[
0
].
post
({
"
identifier
"
:
"
a
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
]
}),
jio_list
[
0
].
post
({
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
1
]
}),
jio_list
[
1
].
post
({
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
]
})
]);
}
function
listDocuments
()
{
return
replicate_jio
.
allDocs
({
"
include_docs
"
:
true
});
}
function
listDocumentsTest
(
answer
)
{
answer
.
data
.
rows
.
sort
(
orderRowsById
);
deepEqual
(
answer
,
{
"
data
"
:
{
"
total_rows
"
:
2
,
"
rows
"
:
[
{
"
id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
doc
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
a
\"
]}
"
,
"
identifier
"
:
"
a
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
value
"
:
{}
},
{
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
doc
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
1
].
toJSON
()
// there's no winner detection here
},
"
value
"
:
{}
}
]
},
"
method
"
:
"
allDocs
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Document list should be merged correctly
"
);
}
function
setFakeStorage
()
{
shared
.
storage_description_list
[
0
].
sub_storage
=
{
"
type
"
:
"
fake
"
,
"
id
"
:
"
replicate scenario test for allDocs method - 1
"
};
jio_list
[
0
]
=
jIO
.
createJIO
(
shared
.
storage_description_list
[
0
],
shared
.
jio_option
);
replicate_jio
=
jIO
.
createJIO
(
shared
.
replicate_storage_description
,
shared
.
jio_option
);
}
function
listDocumentsWithUnavailableStorage
()
{
setTimeout
(
function
()
{
fake_storage
.
commands
[
"
replicate scenario test for allDocs method - 1/allDocs
"
].
error
({
"
status
"
:
0
});
},
100
);
return
replicate_jio
.
allDocs
({
"
include_docs
"
:
true
});
}
function
listDocumentsWithUnavailableStorageTest
(
answer
)
{
deepEqual
(
answer
,
{
"
data
"
:
{
"
total_rows
"
:
1
,
"
rows
"
:
[
{
"
id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
doc
"
:
{
"
_id
"
:
"
{
\"
identifier
\"
:[
\"
b
\"
]}
"
,
"
identifier
"
:
"
b
"
,
"
modified
"
:
shared
.
modified_date_list
[
0
].
toJSON
()
},
"
value
"
:
{}
}
]
},
"
method
"
:
"
allDocs
"
,
"
result
"
:
"
success
"
,
"
status
"
:
200
,
"
statusText
"
:
"
Ok
"
},
"
Document list with only one available storage
"
);
}
function
unexpectedError
(
error
)
{
if
(
error
instanceof
Error
)
{
deepEqual
([
error
.
name
+
"
:
"
+
error
.
message
,
error
],
"
NO ERROR
"
,
"
Unexpected error
"
);
}
else
{
deepEqual
(
error
,
"
NO ERROR
"
,
"
Unexpected error
"
);
}
}
chain
().
// list documents
then
(
postSomeDocuments
).
then
(
listDocuments
).
then
(
listDocumentsTest
).
// set fake storage
then
(
setFakeStorage
).
// list documents with unavailable storage
then
(
listDocumentsWithUnavailableStorage
).
then
(
listDocumentsWithUnavailableStorageTest
).
// End of scenario
then
(
null
,
unexpectedError
).
then
(
start
);
});
}));
test/tests.html
View file @
e3989e3c
...
@@ -52,5 +52,8 @@
...
@@ -52,5 +52,8 @@
<script
src=
"../src/jio.storage/querystorage.js"
></script>
<script
src=
"../src/jio.storage/querystorage.js"
></script>
<script
src=
"../test/jio.storage/querystorage.tests.js"
></script>
<script
src=
"../test/jio.storage/querystorage.tests.js"
></script>
<script
src=
"../src/jio.storage/replicatestorage.js"
></script>
<script
src=
"../test/jio.storage/replicatestorage.tests.js"
></script>
</body>
</body>
</html>
</html>
test/tests.require.js
View file @
e3989e3c
...
@@ -39,6 +39,9 @@
...
@@ -39,6 +39,9 @@
"
splitstorage
"
:
"
../src/jio.storage/splitstorage
"
,
"
splitstorage
"
:
"
../src/jio.storage/splitstorage
"
,
"
splitstorage_tests
"
:
"
jio.storage/splitstorage.tests
"
,
"
splitstorage_tests
"
:
"
jio.storage/splitstorage.tests
"
,
"
replicatestorage
"
:
"
../src/jio.storage/replicatestorage
"
,
"
replicatestorage_tests
"
:
"
jio.storage/replicatestorage.tests
"
,
"
qunit
"
:
"
../lib/qunit/qunit
"
,
"
qunit
"
:
"
../lib/qunit/qunit
"
,
"
sinon
"
:
"
../lib/sinon/sinon
"
,
"
sinon
"
:
"
../lib/sinon/sinon
"
,
"
sinon_qunit
"
:
"
../lib/sinon/sinon-qunit
"
"
sinon_qunit
"
:
"
../lib/sinon/sinon-qunit
"
...
@@ -59,6 +62,7 @@
...
@@ -59,6 +62,7 @@
"
gidstorage_tests
"
,
"
gidstorage_tests
"
,
"
revisionstorage_tests
"
,
"
revisionstorage_tests
"
,
"
replicaterevisionstorage_tests
"
,
"
replicaterevisionstorage_tests
"
,
"
splitstorage_tests
"
"
splitstorage_tests
"
,
"
replicatestorage_tests
"
]);
]);
}());
}());
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment