Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Hamza
jio
Commits
9beab765
Commit
9beab765
authored
Jan 02, 2014
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
splitstorage unit tests added
parent
1a6a0a32
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
852 additions
and
422 deletions
+852
-422
test/jio.storage/splitstorage.tests.js
test/jio.storage/splitstorage.tests.js
+844
-421
test/tests.html
test/tests.html
+3
-0
test/tests.require.js
test/tests.require.js
+5
-1
No files found.
test/jio.storage/splitstorage.tests.js
View file @
9beab765
/*jslint indent: 2, maxlen: 80, nomen: true */
/*jslint indent: 2, maxlen: 80, nomen: true */
/*global define, jIO, jio_tests, test, ok, deepEqual, sinon, module */
/*global define, jIO, test_util, RSVP, test, ok, deepEqual, module, stop,
start, hex_sha256 */
// define([module_name], [dependencies], module);
// define([module_name], [dependencies], module);
(
function
(
dependencies
,
module
)
{
(
function
(
dependencies
,
module
)
{
...
@@ -7,519 +8,941 @@
...
@@ -7,519 +8,941 @@
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
return
define
(
dependencies
,
module
);
return
define
(
dependencies
,
module
);
}
}
module
(
jIO
,
jio_tests
);
module
(
jIO
,
test_util
,
RSVP
);
}([
'
jio
'
,
'
jio_tests
'
,
'
localstorage
'
,
'
splitstorage
'
],
function
(
jIO
,
util
)
{
}([
'
jio
'
,
'
test_util
'
,
'
rsvp
'
,
'
localstorage
'
,
'
splitstorage
'
],
function
(
jIO
,
util
,
RSVP
)
{
"
use strict
"
;
"
use strict
"
;
function
generateTools
()
{
var
tool
=
{
return
{
"
readBlobAsBinaryString
"
:
jIO
.
util
.
readBlobAsBinaryString
clock
:
sinon
.
useFakeTimers
(),
};
spy
:
util
.
ospy
,
tick
:
util
.
otick
function
reverse
(
promise
)
{
};
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
,
notify
)
{
promise
.
then
(
reject
,
resolve
,
notify
);
},
function
()
{
promise
.
cancel
();
});
}
/**
* sequence(thens): Promise
*
* Executes a sequence of *then* callbacks. It acts like
* `smth().then(callback).then(callback)...`. The first callback is called
* with no parameter.
*
* Elements of `thens` array can be a function or an array contaning at most
* three *then* callbacks: *onFulfilled*, *onRejected*, *onNotified*.
*
* When `cancel()` is executed, each then promises are cancelled at the same
* time.
*
* @param {Array} thens An array of *then* callbacks
* @return {Promise} A new promise
*/
function
sequence
(
thens
)
{
var
promises
=
[];
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
,
notify
)
{
var
i
;
promises
[
0
]
=
new
RSVP
.
Promise
(
function
(
resolve
)
{
resolve
();
});
for
(
i
=
0
;
i
<
thens
.
length
;
i
+=
1
)
{
if
(
Array
.
isArray
(
thens
[
i
]))
{
promises
[
i
+
1
]
=
promises
[
i
].
then
(
thens
[
i
][
0
],
thens
[
i
][
1
],
thens
[
i
][
2
]);
}
else
{
promises
[
i
+
1
]
=
promises
[
i
].
then
(
thens
[
i
]);
}
}
promises
[
i
].
then
(
resolve
,
reject
,
notify
);
},
function
()
{
var
i
;
for
(
i
=
0
;
i
<
promises
.
length
;
i
+=
1
)
{
promises
[
i
].
cancel
();
}
});
}
function
unexpectedError
(
error
)
{
if
(
error
instanceof
Error
)
{
deepEqual
([
error
.
name
+
"
:
"
+
error
.
message
,
error
],
"
UNEXPECTED ERROR
"
,
"
Unexpected error
"
);
}
else
{
deepEqual
(
error
,
"
UNEXPECTED ERROR
"
,
"
Unexpected error
"
);
}
}
}
module
(
"
SplitStorage + LocalStorage
"
);
module
(
"
SplitStorage + LocalStorage
"
);
test
(
"
Post
"
,
function
()
{
test
(
"
Post
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
,
jio_local_list
=
[];
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
post1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
post2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
post1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
jio_local_list
[
0
]
=
jIO
.
createJIO
(
shared
.
local_storage_description1
,
{
"
username
"
:
"
splitstorage
"
,
"
workspace
"
:
shared
.
workspace
"
application_name
"
:
"
post2
"
});
}]
jio_local_list
[
1
]
=
jIO
.
createJIO
(
shared
.
local_storage_description2
,
{
"
workspace
"
:
shared
.
workspace
});
});
jio_local_list
.
run
=
function
(
method
,
argument
)
{
var
i
,
promises
=
[];
for
(
i
=
0
;
i
<
this
.
length
;
i
+=
1
)
{
promises
[
i
]
=
this
[
i
][
method
].
apply
(
this
[
i
],
argument
);
}
return
RSVP
.
all
(
promises
);
};
jio_local_list
.
get
=
function
()
{
return
this
.
run
(
"
get
"
,
arguments
);
};
stop
();
// post without id
// post without id
o
.
spy
(
o
,
"
jobstatus
"
,
"
done
"
,
"
Post document without id
"
);
jio
.
post
({
o
.
jio
.
post
({
"
_underscored_meta
"
:
"
uvalue
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
"
meta
"
:
"
data
"
},
function
(
err
,
response
)
{
}).
then
(
function
(
answer
)
{
o
.
f
(
err
,
response
);
shared
.
uuid
=
answer
.
id
;
o
.
uuid
=
(
err
||
response
).
id
;
answer
.
id
=
"
<uuid>
"
;
ok
(
util
.
isUuid
(
o
.
uuid
),
"
Uuid should look like
"
+
ok
(
util
.
isUuid
(
shared
.
uuid
),
"
Uuid should look like
"
+
"
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx :
"
+
o
.
uuid
);
"
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx :
"
+
shared
.
uuid
);
});
deepEqual
(
answer
,
{
o
.
tick
(
o
);
"
id
"
:
"
<uuid>
"
,
"
method
"
:
"
post
"
,
// check uploaded documents
"
result
"
:
"
success
"
,
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
"
status
"
:
201
,
'
jio/localstorage/splitstorage/post1/
'
+
o
.
uuid
"
statusText
"
:
"
Created
"
),
{
},
"
Post document without id
"
);
"
_id
"
:
o
.
uuid
,
"
_underscored_meta
"
:
"
uvalue
"
,
// check uploaded documents
"
data
"
:
"
{
\"
meta
\"
"
return
jio_local_list
.
get
({
"
_id
"
:
shared
.
uuid
});
},
"
Check uploaded document in sub storage 1
"
);
}).
then
(
function
(
answers
)
{
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
var
i
;
'
jio/localstorage/splitstorage/post2/
'
+
o
.
uuid
for
(
i
=
0
;
i
<
answers
.
length
;
i
+=
1
)
{
),
{
deepEqual
(
answers
[
i
].
data
,
{
"
_id
"
:
o
.
uuid
,
"
_id
"
:
shared
.
uuid
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
:
\"
data
\"
}
"
"
data
"
:
i
===
0
?
"
{
\"
meta
\"
"
:
"
:
\"
data
\"
}
"
},
"
Check uploaded document in sub storage 2
"
);
},
"
Check uploaded document in sub storage
"
+
(
i
+
1
));
}
// post with id
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Post document with id
"
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
hello
"
:
"
world
"
},
o
.
f
);
o
.
tick
(
o
);
// check uploaded documents
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/post1/one
'
),
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
{
\"
meta
\"
:
\"
data
\"
,
"
},
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
// post with id
'
jio/localstorage/splitstorage/post2/one
'
return
jio
.
post
({
),
{
"
_id
"
:
"
one
"
,
"
_id
"
:
"
on
e
"
,
"
_underscored_meta
"
:
"
uvalu
e
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
data
"
:
"
\"
hello
\"
:
\"
world
\"
}
"
"
hello
"
:
"
world
"
},
"
Check uploaded document in sub storage 2
"
);
}
);
// post with id
}).
then
(
function
(
answer
)
{
o
.
spy
(
o
,
"
status
"
,
409
,
"
Post document with same id
"
);
o
.
jio
.
post
({
deepEqual
(
answer
,
{
"
_id
"
:
"
one
"
,
"
id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
method
"
:
"
post
"
,
"
meta
"
:
"
data
"
,
"
result
"
:
"
success
"
,
"
hello
"
:
"
world
"
"
status
"
:
201
,
},
o
.
f
);
"
statusText
"
:
"
Created
"
o
.
tick
(
o
);
},
"
Post document with id
"
);
// check uploaded documents
return
jio_local_list
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answers
)
{
deepEqual
(
answers
[
0
].
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
{
\"
meta
\"
:
\"
data
\"
,
"
},
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
answers
[
1
].
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
\"
hello
\"
:
\"
world
\"
}
"
},
"
Check uploaded document in sub storage 2
"
);
// post with id
return
reverse
(
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
hello
"
:
"
world
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
error
"
:
"
conflict
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to post document
"
,
"
method
"
:
"
post
"
,
"
reason
"
:
"
document exists
"
,
"
result
"
:
"
error
"
,
"
status
"
:
409
,
"
statusText
"
:
"
Conflict
"
},
"
Post document with same id -> 409 Conflict
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
PutAttachment
"
,
function
()
{
test
(
"
PutAttachment
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
,
jio_local_list
=
[];
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
putAttachment1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
putAttachment2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
putAttachment1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
jio_local_list
[
0
]
=
jIO
.
createJIO
(
shared
.
local_storage_description1
,
{
"
username
"
:
"
splitstorage
"
,
"
workspace
"
:
shared
.
workspace
"
application_name
"
:
"
putAttachment2
"
});
}]
jio_local_list
[
1
]
=
jIO
.
createJIO
(
shared
.
local_storage_description2
,
{
"
workspace
"
:
shared
.
workspace
});
});
jio_local_list
.
run
=
function
(
method
,
argument
)
{
var
i
,
promises
=
[];
for
(
i
=
0
;
i
<
this
.
length
;
i
+=
1
)
{
promises
[
i
]
=
this
[
i
][
method
].
apply
(
this
[
i
],
argument
);
}
return
RSVP
.
all
(
promises
);
};
jio_local_list
.
get
=
function
()
{
return
this
.
run
(
"
get
"
,
arguments
);
};
jio_local_list
.
getAttachmentAsBinaryString
=
function
()
{
return
this
.
run
(
"
getAttachment
"
,
arguments
).
then
(
function
(
answers
)
{
var
i
,
promises
=
[];
for
(
i
=
0
;
i
<
answers
.
length
;
i
+=
1
)
{
promises
[
i
]
=
tool
.
readBlobAsBinaryString
(
answers
[
i
].
data
);
}
return
RSVP
.
all
(
promises
);
});
};
o
.
spy
(
o
,
"
status
"
,
404
,
"
Put attachment on a inexistent document
"
);
stop
();
o
.
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
return
reverse
(
jio
.
putAttachment
({
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
,
"
attachment
"
:
"
my_attachment
"
},
"
Put attachment
"
);
o
.
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
"
_content_type
"
:
"
text/plain
"
},
o
.
f
);
})).
then
(
function
(
answer
)
{
o
.
tick
(
o
);
deepEqual
(
answer
,
{
// check uploaded documents
"
attachment
"
:
"
my_attachment
"
,
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
"
error
"
:
"
not_found
"
,
'
jio/localstorage/splitstorage/putAttachment1/one
'
"
id
"
:
"
one
"
,
),
{
"
message
"
:
"
Unable to put attachment
"
,
"
_id
"
:
"
one
"
,
"
method
"
:
"
putAttachment
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
reason
"
:
"
missing
"
,
"
data
"
:
"
{
\"
meta
\"
"
,
"
result
"
:
"
error
"
,
"
_attachments
"
:
{
"
status
"
:
404
,
"
my_attachment
"
:
{
"
statusText
"
:
"
Not Found
"
"
length
"
:
3
,
},
"
Put attachment on a inexistent document -> 404 Not Found
"
);
"
digest
"
:
"
md5-1b4686bc8ca15befdccb1da1dcb8c271
"
,
// md5("My ")
"
content_type
"
:
"
text/plain
"
return
jio
.
post
({
}
"
_id
"
:
"
one
"
,
}
"
_underscored_meta
"
:
"
uvalue
"
,
},
"
Check uploaded document in sub storage 1
"
);
"
meta
"
:
"
data
"
});
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
}).
then
(
function
()
{
'
jio/localstorage/splitstorage/putAttachment2/one
'
),
{
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
data
"
:
"
:
\"
data
\"
}
"
,
"
_data
"
:
"
My Data
"
,
"
_attachments
"
:
{
"
_mimetype
"
:
"
text/plain
"
"
my_attachment
"
:
{
});
"
length
"
:
4
,
"
digest
"
:
"
md5-f6068daa29dbb05a7ead1e3b5a48bbee
"
,
// md5("Data")
"
content_type
"
:
"
text/plain
"
}
}
},
"
Check uploaded document in sub storage 2
"
);
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
}).
then
(
function
(
answer
)
{
'
jio/localstorage/splitstorage/putAttachment1/one/my_attachment
'
),
"
My
"
,
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
id
"
:
"
one
"
,
"
method
"
:
"
putAttachment
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Put attachment on a document
"
);
// check uploaded documents
return
jio_local_list
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answers
)
{
deepEqual
(
answers
[
0
].
data
,
{
"
_attachments
"
:
{
"
my_attachment
"
:
{
"
content_type
"
:
"
text/plain
"
,
"
digest
"
:
"
sha256-ebf2d770a6a2dfa135f6c81431f22fc3cbcde9ae
"
+
"
e52759ca9e520d4d964c1322
"
,
// sha256("My ")
"
length
"
:
3
}
},
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
{
\"
meta
\"
"
},
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
answers
[
1
].
data
,
{
"
_attachments
"
:
{
"
my_attachment
"
:
{
"
content_type
"
:
"
text/plain
"
,
"
digest
"
:
"
sha256-cec3a9b89b2e391393d0f68e4bc12a9fa6cf358b
"
+
"
3cdf79496dc442d52b8dd528
"
,
// sha256("Data")
"
length
"
:
4
}
},
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
:
\"
data
\"
}
"
},
"
Check uploaded document in sub storage 2
"
);
return
jio_local_list
.
getAttachmentAsBinaryString
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
});
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
}).
then
(
function
(
events
)
{
'
jio/localstorage/splitstorage/putAttachment2/one/my_attachment
'
),
"
Data
"
,
"
Check uploaded document in sub storage 2
"
);
deepEqual
(
events
[
0
].
target
.
result
,
"
My
"
,
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
events
[
1
].
target
.
result
,
"
Data
"
,
"
Check uploaded document in sub storage 1
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
Get
"
,
function
()
{
test
(
"
Get
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
get1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
get2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
get1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
stop
();
"
application_name
"
:
"
get2
"
}]
reverse
(
jio
.
get
({
"
_id
"
:
"
one
"
})).
then
(
function
(
answer
)
{
});
deepEqual
(
answer
,
{
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get document
"
,
"
method
"
:
"
get
"
,
"
reason
"
:
"
missing
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Get missing document
"
);
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get missing document
"
);
}).
then
(
function
()
{
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
return
jio
.
get
({
"
_id
"
:
"
one
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
(
answer
)
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Get posted document
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
putAttachment
({
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
_data
"
:
"
My Data
"
,
"
meta
"
:
"
data
"
"
_mimetype
"
:
"
text/plain
"
},
"
Get posted document
"
);
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
meta
"
:
"
data
"
,
"
_data
"
:
"
My Data
"
,
"
_attachments
"
:
{
"
_content_type
"
:
"
text/plain
"
"
my_attachment
"
:
{
});
"
length
"
:
7
,
"
content_type
"
:
"
text/plain
"
}).
then
(
function
()
{
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
_attachments
"
:
{
"
my_attachment
"
:
{
"
length
"
:
7
,
"
content_type
"
:
"
text/plain
"
}
}
}
}
},
"
Get document with attachment informations
"
);
},
"
Get document with attachment informations
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
}).
fail
(
unexpectedError
).
always
(
start
);
o
.
tick
(
o
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
GetAttachment
"
,
function
()
{
test
(
"
GetAttachment
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
getAttachment1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
getAttachment2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
getAttachment1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
getAttachment2
"
}]
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get attachment from missing document
"
);
stop
();
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
reverse
(
jio
.
getAttachment
({
o
.
clock
.
tick
(
1000
);
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
})).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get attachment
"
,
"
method
"
:
"
getAttachment
"
,
"
reason
"
:
"
missing document
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Get attachment from missing document -> 404 Not Found
"
);
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get missing attachment from document
"
);
}).
then
(
function
()
{
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
return
reverse
(
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get attachment
"
,
"
method
"
:
"
getAttachment
"
,
"
reason
"
:
"
missing attachment
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Get missing attachment from document
"
);
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
jio
.
putAttachment
({
}).
then
(
function
()
{
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
return
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
});
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
"
My Data
"
,
"
Get attachment
"
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
return
tool
.
readBlobAsBinaryString
(
answer
.
data
);
o
.
tick
(
o
);
}).
then
(
function
(
event
)
{
deepEqual
(
event
.
target
.
result
,
"
My Data
"
,
"
Get attachment
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
r
emoveAttachment
"
,
function
()
{
test
(
"
R
emoveAttachment
"
,
function
()
{
var
o
=
generateTools
()
;
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
removeAttachment1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
removeAttachment2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
removeAttachment1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
removeAttachment2
"
}]
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Remove attachment from inexistent document
"
);
stop
();
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
reverse
(
jio
.
removeAttachment
({
o
.
clock
.
tick
(
1000
);
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
})).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to remove attachment
"
,
"
method
"
:
"
removeAttachment
"
,
"
reason
"
:
"
missing document
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Remove attachment from inexistent document -> 404 Not Found
"
);
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Remove inexistent attachment
"
);
}).
then
(
function
()
{
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
return
reverse
(
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to remove attachment
"
,
"
method
"
:
"
removeAttachment
"
,
"
reason
"
:
"
missing attachment
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Remove inexistent attachment -> 404 Not Found
"
);
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
jio
.
putAttachment
({
}).
then
(
function
()
{
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
return
jio
.
removeAttachment
({
"
ok
"
:
true
,
"
_id
"
:
"
one
"
,
"
id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
"
attachment
"
:
"
my_attachment
"
});
},
"
Remove attachment
"
);
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
(
answer
)
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
deepEqual
(
answer
,
{
"
meta
"
:
"
data
"
"
attachment
"
:
"
my_attachment
"
,
},
"
Get document for check
"
);
"
id
"
:
"
one
"
,
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
"
method
"
:
"
removeAttachment
"
,
o
.
tick
(
o
);
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Remove attachment
"
);
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get attachment for check
"
);
deepEqual
(
answer
.
data
,
{
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
"
_id
"
:
"
one
"
,
o
.
tick
(
o
);
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Check document
"
);
return
reverse
(
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get attachment
"
,
"
method
"
:
"
getAttachment
"
,
"
reason
"
:
"
missing attachment
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Check attachment -> 404 Not Found
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
remove
"
,
function
()
{
test
(
"
Remove
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
remove1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
remove2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
remove1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
stop
();
"
application_name
"
:
"
remove2
"
}]
reverse
(
jio
.
remove
({
"
_id
"
:
"
one
"
})).
then
(
function
(
answer
)
{
});
deepEqual
(
answer
,
{
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to remove document
"
,
"
method
"
:
"
remove
"
,
"
reason
"
:
"
missing
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Remove missing document -> 404 Not Found
"
);
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
spy
(
o
,
"
status
"
,
404
,
"
Remove missing document
"
);
}).
then
(
function
()
{
o
.
jio
.
remove
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
return
jio
.
putAttachment
({
o
.
clock
.
tick
(
1000
);
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
jio
.
putAttachment
({
}).
then
(
function
()
{
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
return
jio
.
remove
({
"
_id
"
:
"
one
"
});
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Remove document
"
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
remove
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get attachment for check
"
);
deepEqual
(
answer
,
{
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
"
id
"
:
"
one
"
,
o
.
tick
(
o
);
"
method
"
:
"
remove
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Remove document
"
);
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get document for check
"
);
return
reverse
(
jio
.
getAttachment
({
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
"
_id
"
:
"
one
"
,
o
.
tick
(
o
);
"
_attachment
"
:
"
my_attachment
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get attachment
"
,
"
method
"
:
"
getAttachment
"
,
"
reason
"
:
"
missing document
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Check attachment -> 404 Not Found
"
);
return
reverse
(
jio
.
get
({
"
_id
"
:
"
one
"
}));
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
message
"
:
"
Unable to get document
"
,
"
method
"
:
"
get
"
,
"
reason
"
:
"
missing
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Check document -> 404 Not Found
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
Put
"
,
function
()
{
test
(
"
Put
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
put1
"
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
put2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
storage_list
"
:
[
"
type
"
:
"
local
"
,
shared
.
local_storage_description1
,
"
username
"
:
"
splitstorage
"
,
shared
.
local_storage_description2
"
application_name
"
:
"
put1
"
]
},
{
},
{
"
workspace
"
:
shared
.
workspace
});
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
put2
"
}]
});
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Put document
"
);
stop
();
o
.
jio
.
put
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
spy
(
o
,
"
value
"
,
{
jio
.
put
(
{
"
_id
"
:
"
one
"
,
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
"
meta
"
:
"
data
"
},
"
Get document for check
"
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
deepEqual
(
answer
,
{
"
id
"
:
"
one
"
,
"
method
"
:
"
put
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Put new document
"
);
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Check document
"
);
return
jio
.
put
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meow
"
:
"
dog
"
});
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Put document again
"
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
put
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meow
"
:
"
dog
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
spy
(
o
,
"
value
"
,
{
deepEqual
(
answer
,
{
"
_id
"
:
"
one
"
,
"
id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
method
"
:
"
put
"
,
"
meow
"
:
"
dog
"
"
result
"
:
"
success
"
,
},
"
Get document for check
"
);
"
status
"
:
204
,
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
"
statusText
"
:
"
No Content
"
o
.
tick
(
o
);
},
"
Put same document again
"
);
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meow
"
:
"
dog
"
},
"
Get document for check
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
test
(
"
AllDocs
"
,
function
()
{
test
(
"
AllDocs
"
,
function
()
{
var
o
=
generateTools
();
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
alldocs1
"
},
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
alldocs2
"
}]
});
for
(
o
.
i
=
0
;
o
.
i
<
5
;
o
.
i
+=
1
)
{
shared
.
workspace
=
{};
o
.
jio
.
post
({
shared
.
local_storage_description1
=
{
"
_id
"
:
"
doc
"
+
o
.
i
,
"
type
"
:
"
local
"
,
"
_underscored_meta
"
:
"
uvalue
"
+
o
.
i
,
"
username
"
:
"
splitstorage
"
,
"
meta
"
:
"
data
"
+
o
.
i
"
application_name
"
:
"
alldocs1
"
});
};
o
.
clock
.
tick
(
1000
);
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
alldocs2
"
};
jio
=
jIO
.
createJIO
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
stop
();
function
prepareDatabase
()
{
var
i
,
do_list
=
[];
function
post
(
i
)
{
return
function
()
{
return
jio
.
post
({
"
_id
"
:
"
doc
"
+
i
,
"
_underscored_meta
"
:
"
uvalue
"
+
i
,
"
meta
"
:
"
data
"
+
i
});
};
}
function
putAttachment
(
i
)
{
return
function
()
{
return
jio
.
putAttachment
({
"
_id
"
:
"
doc
"
+
i
,
"
_attachment
"
:
"
my_attachment
"
+
i
,
"
_data
"
:
"
My Data
"
+
i
,
"
_content_type
"
:
"
text/plain
"
});
};
}
for
(
i
=
0
;
i
<
5
;
i
+=
1
)
{
do_list
.
push
(
post
(
i
));
}
for
(
i
=
0
;
i
<
2
;
i
+=
1
)
{
do_list
.
push
(
putAttachment
(
i
));
}
return
sequence
(
do_list
);
}
}
for
(
o
.
i
=
0
;
o
.
i
<
2
;
o
.
i
+=
1
)
{
prepareDatabase
().
then
(
function
()
{
o
.
jio
.
putAttachment
({
"
_id
"
:
"
doc
"
+
o
.
i
,
return
jio
.
get
({
"
_id
"
:
"
doc1
"
});
"
_attachment
"
:
"
my_attachment
"
+
o
.
i
,
"
_data
"
:
"
My Data
"
+
o
.
i
,
}).
then
(
function
(
answer
)
{
"
_mimetype
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
}
o
.
spy
(
o
,
"
value
"
,
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
doc1
"
,
"
_id
"
:
"
doc1
"
,
"
_underscored_meta
"
:
"
uvalue1
"
,
"
_underscored_meta
"
:
"
uvalue1
"
,
"
meta
"
:
"
data1
"
,
"
meta
"
:
"
data1
"
,
"
_attachments
"
:
{
"
_attachments
"
:
{
"
my_attachment1
"
:
{
"
my_attachment1
"
:
{
"
length
"
:
8
,
"
length
"
:
8
,
"
content_type
"
:
"
text/plain
"
"
content_type
"
:
"
text/plain
"
}
}
}
}
},
"
Check document
"
);
},
"
Get document for check
"
);
o
.
jio
.
get
({
"
_id
"
:
"
doc1
"
},
o
.
f
);
return
jio
.
allDocs
();
o
.
tick
(
o
);
}).
then
(
function
(
answer
)
{
o
.
spy
(
o
,
"
value
"
,
{
"
total_rows
"
:
5
,
answer
.
data
.
rows
.
sort
(
function
(
a
,
b
)
{
"
rows
"
:
[{
return
a
.
id
<
b
.
id
?
-
1
:
a
.
id
>
b
.
id
?
1
:
0
;
"
id
"
:
"
doc0
"
,
});
"
key
"
:
"
doc0
"
,
"
value
"
:
{}
deepEqual
(
answer
.
data
,
{
},
{
"
total_rows
"
:
5
,
"
id
"
:
"
doc1
"
,
"
rows
"
:
[{
"
key
"
:
"
doc1
"
,
"
id
"
:
"
doc0
"
,
"
value
"
:
{}
"
key
"
:
"
doc0
"
,
},
{
"
value
"
:
{}
"
id
"
:
"
doc2
"
,
},
{
"
key
"
:
"
doc2
"
,
"
id
"
:
"
doc1
"
,
"
value
"
:
{}
"
key
"
:
"
doc1
"
,
},
{
"
value
"
:
{}
"
id
"
:
"
doc3
"
,
},
{
"
key
"
:
"
doc3
"
,
"
id
"
:
"
doc2
"
,
"
value
"
:
{}
"
key
"
:
"
doc2
"
,
},
{
"
value
"
:
{}
"
id
"
:
"
doc4
"
,
},
{
"
key
"
:
"
doc4
"
,
"
id
"
:
"
doc3
"
,
"
value
"
:
{}
"
key
"
:
"
doc3
"
,
}]
"
value
"
:
{}
},
"
AllDocs with document ids only
"
);
},
{
o
.
jio
.
allDocs
(
function
(
err
,
response
)
{
"
id
"
:
"
doc4
"
,
if
(
response
&&
Array
.
isArray
(
response
.
rows
))
{
"
key
"
:
"
doc4
"
,
response
.
rows
.
sort
(
function
(
a
,
b
)
{
"
value
"
:
{}
return
a
.
id
<
b
.
id
?
-
1
:
a
.
id
>
b
.
id
?
1
:
0
;
}]
});
},
"
AllDocs with document ids only
"
);
}
o
.
f
(
err
,
response
);
}).
fail
(
unexpectedError
).
always
(
start
);
});
o
.
tick
(
o
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
});
}));
}));
test/tests.html
View file @
9beab765
...
@@ -38,5 +38,8 @@
...
@@ -38,5 +38,8 @@
<script
src=
"../src/jio.storage/replicaterevisionstorage.js"
></script>
<script
src=
"../src/jio.storage/replicaterevisionstorage.js"
></script>
<script
src=
"../test/jio.storage/replicaterevisionstorage.tests.js"
></script>
<script
src=
"../test/jio.storage/replicaterevisionstorage.tests.js"
></script>
<script
src=
"../src/jio.storage/splitstorage.js"
></script>
<script
src=
"../test/jio.storage/splitstorage.tests.js"
></script>
</body>
</body>
</html>
</html>
test/tests.require.js
View file @
9beab765
...
@@ -37,6 +37,9 @@
...
@@ -37,6 +37,9 @@
"
replicaterevisionstorage_tests
"
:
"
replicaterevisionstorage_tests
"
:
"
jio.storage/replicaterevisionstorage.tests
"
,
"
jio.storage/replicaterevisionstorage.tests
"
,
"
splitstorage
"
:
"
../src/jio.storage/splitstorage
"
,
"
splitstorage_tests
"
:
"
jio.storage/splitstorage.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
"
...
@@ -56,6 +59,7 @@
...
@@ -56,6 +59,7 @@
"
indexstorage_tests
"
,
"
indexstorage_tests
"
,
"
gidstorage_tests
"
,
"
gidstorage_tests
"
,
"
revisionstorage_tests
"
,
"
revisionstorage_tests
"
,
"
replicaterevisionstorage_tests
"
"
replicaterevisionstorage_tests
"
,
"
splitstorage_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