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
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
Show 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 */
/*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);
(
function
(
dependencies
,
module
)
{
...
...
@@ -7,226 +8,422 @@
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
return
define
(
dependencies
,
module
);
}
module
(
jIO
,
jio_tests
);
}([
'
jio
'
,
'
jio_tests
'
,
'
localstorage
'
,
'
splitstorage
'
],
function
(
jIO
,
util
)
{
module
(
jIO
,
test_util
,
RSVP
);
}([
'
jio
'
,
'
test_util
'
,
'
rsvp
'
,
'
localstorage
'
,
'
splitstorage
'
],
function
(
jIO
,
util
,
RSVP
)
{
"
use strict
"
;
function
generateTools
()
{
return
{
clock
:
sinon
.
useFakeTimers
(),
spy
:
util
.
ospy
,
tick
:
util
.
otick
var
tool
=
{
"
readBlobAsBinaryString
"
:
jIO
.
util
.
readBlobAsBinaryString
};
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
"
);
test
(
"
Post
"
,
function
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
,
jio_local_list
=
[]
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
jio_local_list
[
0
]
=
jIO
.
createJIO
(
shared
.
local_storage_description1
,
{
"
workspace
"
:
shared
.
workspace
});
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
o
.
spy
(
o
,
"
jobstatus
"
,
"
done
"
,
"
Post document without id
"
);
o
.
jio
.
post
({
jio
.
post
({
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
function
(
err
,
response
)
{
o
.
f
(
err
,
response
);
o
.
uuid
=
(
err
||
response
).
id
;
ok
(
util
.
isUuid
(
o
.
uuid
),
"
Uuid should look like
"
+
"
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx :
"
+
o
.
uuid
);
});
o
.
tick
(
o
);
}).
then
(
function
(
answer
)
{
shared
.
uuid
=
answer
.
id
;
answer
.
id
=
"
<uuid>
"
;
ok
(
util
.
isUuid
(
shared
.
uuid
),
"
Uuid should look like
"
+
"
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx :
"
+
shared
.
uuid
);
deepEqual
(
answer
,
{
"
id
"
:
"
<uuid>
"
,
"
method
"
:
"
post
"
,
"
result
"
:
"
success
"
,
"
status
"
:
201
,
"
statusText
"
:
"
Created
"
},
"
Post document without id
"
);
// check uploaded documents
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/post1/
'
+
o
.
uuid
),
{
"
_id
"
:
o
.
uuid
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
{
\"
meta
\"
"
},
"
Check uploaded document in sub storage 1
"
);
return
jio_local_list
.
get
({
"
_id
"
:
shared
.
uuid
});
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/post2/
'
+
o
.
uuid
),
{
"
_id
"
:
o
.
uuid
,
}).
then
(
function
(
answers
)
{
var
i
;
for
(
i
=
0
;
i
<
answers
.
length
;
i
+=
1
)
{
deepEqual
(
answers
[
i
].
data
,
{
"
_id
"
:
shared
.
uuid
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
:
\"
data
\"
}
"
},
"
Check uploaded document in sub storage 2
"
);
"
data
"
:
i
===
0
?
"
{
\"
meta
\"
"
:
"
:
\"
data
\"
}
"
},
"
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
({
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
hello
"
:
"
world
"
},
o
.
f
);
o
.
tick
(
o
);
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
id
"
:
"
one
"
,
"
method
"
:
"
post
"
,
"
result
"
:
"
success
"
,
"
status
"
:
201
,
"
statusText
"
:
"
Created
"
},
"
Post document with id
"
);
// check uploaded documents
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/post1/one
'
),
{
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
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/post2/one
'
),
{
deepEqual
(
answers
[
1
].
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
\"
hello
\"
:
\"
world
\"
}
"
},
"
Check uploaded document in sub storage 2
"
);
// post with id
o
.
spy
(
o
,
"
status
"
,
409
,
"
Post document with same id
"
);
o
.
jio
.
post
({
return
reverse
(
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
"
hello
"
:
"
world
"
},
o
.
f
);
o
.
tick
(
o
);
}));
}).
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
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
,
jio_local_list
=
[]
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
jio_local_list
[
0
]
=
jIO
.
createJIO
(
shared
.
local_storage_description1
,
{
"
workspace
"
:
shared
.
workspace
});
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
"
);
o
.
jio
.
putAttachment
({
stop
();
return
reverse
(
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
},
o
.
f
);
o
.
tick
(
o
);
"
_content_type
"
:
"
text/plain
"
})).
then
(
function
(
answer
)
{
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
error
"
:
"
not_found
"
,
"
id
"
:
"
one
"
,
"
attachment
"
:
"
my_attachment
"
},
"
Put attachment
"
);
o
.
jio
.
putAttachment
({
"
message
"
:
"
Unable to put attachment
"
,
"
method
"
:
"
putAttachment
"
,
"
reason
"
:
"
missing
"
,
"
result
"
:
"
error
"
,
"
status
"
:
404
,
"
statusText
"
:
"
Not Found
"
},
"
Put attachment on a inexistent document -> 404 Not Found
"
);
return
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
}).
then
(
function
()
{
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
},
o
.
f
);
o
.
tick
(
o
);
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
id
"
:
"
one
"
,
"
method
"
:
"
putAttachment
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Put attachment on a document
"
);
// check uploaded documents
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/putAttachment1/one
'
),
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
{
\"
meta
\"
"
,
return
jio_local_list
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answers
)
{
deepEqual
(
answers
[
0
].
data
,
{
"
_attachments
"
:
{
"
my_attachment
"
:
{
"
length
"
:
3
,
"
digest
"
:
"
md5-1b4686bc8ca15befdccb1da1dcb8c271
"
,
// md5("My ")
"
content_type
"
:
"
text/plain
"
}
"
content_type
"
:
"
text/plain
"
,
"
digest
"
:
"
sha256-ebf2d770a6a2dfa135f6c81431f22fc3cbcde9ae
"
+
"
e52759ca9e520d4d964c1322
"
,
// sha256("My ")
"
length
"
:
3
}
},
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/putAttachment2/one
'
),
{
},
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
data
"
:
"
:
\"
data
\"
}
"
,
"
data
"
:
"
{
\"
meta
\"
"
},
"
Check uploaded document in sub storage 1
"
);
deepEqual
(
answers
[
1
].
data
,
{
"
_attachments
"
:
{
"
my_attachment
"
:
{
"
length
"
:
4
,
"
digest
"
:
"
md5-f6068daa29dbb05a7ead1e3b5a48bbee
"
,
// md5("Data")
"
content_type
"
:
"
text/plain
"
}
"
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
"
);
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
jio/localstorage/splitstorage/putAttachment1/one/my_attachment
'
),
"
My
"
,
"
Check uploaded document in sub storage 1
"
);
return
jio_local_list
.
getAttachmentAsBinaryString
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
});
}).
then
(
function
(
events
)
{
deepEqual
(
util
.
jsonlocalstorage
.
getItem
(
'
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
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
stop
();
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
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
()
{
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
return
jio
.
get
({
"
_id
"
:
"
one
"
});
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Get posted document
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
jio
.
putAttachment
({
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mime
type
"
:
"
text/plain
"
"
_content_
type
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
()
{
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
,
...
...
@@ -237,241 +434,469 @@
}
}
},
"
Get document with attachment informations
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
}).
fail
(
unexpectedError
).
always
(
start
);
});
test
(
"
GetAttachment
"
,
function
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
stop
();
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 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 attachment from missing document
"
);
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
()
{
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
return
reverse
(
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get missing attachment from document
"
);
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
putAttachment
({
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
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
"
My Data
"
,
"
Get attachment
"
);
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
()
{
return
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
});
}).
then
(
function
(
answer
)
{
return
tool
.
readBlobAsBinaryString
(
answer
.
data
);
}).
then
(
function
(
event
)
{
deepEqual
(
event
.
target
.
result
,
"
My Data
"
,
"
Get attachment
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
test
(
"
r
emoveAttachment
"
,
function
()
{
var
o
=
generateTools
()
;
test
(
"
R
emoveAttachment
"
,
function
()
{
var
shared
=
{},
jio
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[{
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
stop
();
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 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 attachment from inexistent document
"
);
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
()
{
o
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
return
reverse
(
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
o
.
spy
(
o
,
"
status
"
,
404
,
"
Remove inexistent attachment
"
);
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
(
answer
)
{
o
.
jio
.
putAttachment
({
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
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
}).
then
(
function
()
{
return
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
attachment
"
:
"
my_attachment
"
,
"
id
"
:
"
one
"
,
"
attachment
"
:
"
my_attachment
"
"
method
"
:
"
removeAttachment
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Remove attachment
"
);
o
.
jio
.
removeAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
o
.
spy
(
o
,
"
value
"
,
{
return
jio
.
get
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Get document for check
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
},
"
Check document
"
);
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get attachment for check
"
);
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
"
},
"
Check attachment -> 404 Not Found
"
);
}).
fail
(
unexpectedError
).
always
(
start
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
});
test
(
"
r
emove
"
,
function
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
test
(
"
R
emove
"
,
function
()
{
var
shared
=
{},
jio
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
stop
();
reverse
(
jio
.
remove
({
"
_id
"
:
"
one
"
})).
then
(
function
(
answer
)
{
o
.
spy
(
o
,
"
status
"
,
404
,
"
Remove missing document
"
);
o
.
jio
.
remove
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
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
.
jio
.
post
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
});
o
.
clock
.
tick
(
1000
);
}).
then
(
function
()
{
o
.
jio
.
putAttachment
({
return
jio
.
putAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
,
"
_data
"
:
"
My Data
"
,
"
_mimetype
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Remove document
"
);
o
.
jio
.
remove
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
()
{
return
jio
.
remove
({
"
_id
"
:
"
one
"
});
}).
then
(
function
(
answer
)
{
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get attachment for check
"
);
o
.
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
},
o
.
f
);
o
.
tick
(
o
);
deepEqual
(
answer
,
{
"
id
"
:
"
one
"
,
"
method
"
:
"
remove
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Remove document
"
);
return
reverse
(
jio
.
getAttachment
({
"
_id
"
:
"
one
"
,
"
_attachment
"
:
"
my_attachment
"
}));
o
.
spy
(
o
,
"
status
"
,
404
,
"
Get document for check
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
}).
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
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
;
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
"
,
"
storage_list
"
:
[
shared
.
local_storage_description1
,
shared
.
local_storage_description2
]
},
{
"
workspace
"
:
shared
.
workspace
});
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Put document
"
);
o
.
jio
.
put
({
stop
();
jio
.
put
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
o
.
f
);
o
.
tick
(
o
);
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
id
"
:
"
one
"
,
"
method
"
:
"
put
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
Put new document
"
);
return
jio
.
get
({
"
_id
"
:
"
one
"
});
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meta
"
:
"
data
"
},
"
Get document for check
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
},
"
Check document
"
);
o
.
spy
(
o
,
"
value
"
,
{
"
ok
"
:
true
,
"
id
"
:
"
one
"
},
"
Put document again
"
);
o
.
jio
.
put
({
return
jio
.
put
({
"
_id
"
:
"
one
"
,
"
_underscored_meta
"
:
"
uvalue
"
,
"
meow
"
:
"
dog
"
},
o
.
f
);
o
.
tick
(
o
);
});
o
.
spy
(
o
,
"
value
"
,
{
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
,
{
"
id
"
:
"
one
"
,
"
method
"
:
"
put
"
,
"
result
"
:
"
success
"
,
"
status
"
:
204
,
"
statusText
"
:
"
No Content
"
},
"
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
"
);
o
.
jio
.
get
({
"
_id
"
:
"
one
"
},
o
.
f
);
o
.
tick
(
o
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
}).
fail
(
unexpectedError
).
always
(
start
);
});
test
(
"
AllDocs
"
,
function
()
{
var
o
=
generateTools
()
;
o
.
jio
=
jIO
.
newJio
({
"
type
"
:
"
split
"
,
"
storage_list
"
:
[
{
var
shared
=
{},
jio
;
shared
.
workspace
=
{};
shared
.
local_storage_description1
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
alldocs1
"
},
{
};
shared
.
local_storage_description2
=
{
"
type
"
:
"
local
"
,
"
username
"
:
"
splitstorage
"
,
"
application_name
"
:
"
alldocs2
"
}]
});
for
(
o
.
i
=
0
;
o
.
i
<
5
;
o
.
i
+=
1
)
{
o
.
jio
.
post
({
"
_id
"
:
"
doc
"
+
o
.
i
,
"
_underscored_meta
"
:
"
uvalue
"
+
o
.
i
,
"
meta
"
:
"
data
"
+
o
.
i
};
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
});
o
.
clock
.
tick
(
1000
)
;
}
;
}
for
(
o
.
i
=
0
;
o
.
i
<
2
;
o
.
i
+=
1
)
{
o
.
jio
.
putAttachment
({
"
_id
"
:
"
doc
"
+
o
.
i
,
"
_attachment
"
:
"
my_attachment
"
+
o
.
i
,
"
_data
"
:
"
My Data
"
+
o
.
i
,
"
_mime
type
"
:
"
text/plain
"
function
putAttachment
(
i
)
{
return
function
(
)
{
return
jio
.
putAttachment
({
"
_id
"
:
"
doc
"
+
i
,
"
_attachment
"
:
"
my_attachment
"
+
i
,
"
_data
"
:
"
My Data
"
+
i
,
"
_content_
type
"
:
"
text/plain
"
});
o
.
clock
.
tick
(
1000
);
};
}
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
);
}
o
.
spy
(
o
,
"
value
"
,
{
prepareDatabase
().
then
(
function
()
{
return
jio
.
get
({
"
_id
"
:
"
doc1
"
});
}).
then
(
function
(
answer
)
{
deepEqual
(
answer
.
data
,
{
"
_id
"
:
"
doc1
"
,
"
_underscored_meta
"
:
"
uvalue1
"
,
"
meta
"
:
"
data1
"
,
...
...
@@ -481,11 +906,17 @@
"
content_type
"
:
"
text/plain
"
}
}
},
"
Get document for check
"
);
o
.
jio
.
get
({
"
_id
"
:
"
doc1
"
},
o
.
f
);
o
.
tick
(
o
);
},
"
Check document
"
);
return
jio
.
allDocs
();
}).
then
(
function
(
answer
)
{
answer
.
data
.
rows
.
sort
(
function
(
a
,
b
)
{
return
a
.
id
<
b
.
id
?
-
1
:
a
.
id
>
b
.
id
?
1
:
0
;
});
o
.
spy
(
o
,
"
value
"
,
{
deepEqual
(
answer
.
data
,
{
"
total_rows
"
:
5
,
"
rows
"
:
[{
"
id
"
:
"
doc0
"
,
...
...
@@ -509,17 +940,9 @@
"
value
"
:
{}
}]
},
"
AllDocs with document ids only
"
);
o
.
jio
.
allDocs
(
function
(
err
,
response
)
{
if
(
response
&&
Array
.
isArray
(
response
.
rows
))
{
response
.
rows
.
sort
(
function
(
a
,
b
)
{
return
a
.
id
<
b
.
id
?
-
1
:
a
.
id
>
b
.
id
?
1
:
0
;
});
}
o
.
f
(
err
,
response
);
});
o
.
tick
(
o
);
util
.
closeAndcleanUpJio
(
o
.
jio
);
}).
fail
(
unexpectedError
).
always
(
start
);
});
}));
test/tests.html
View file @
9beab765
...
...
@@ -38,5 +38,8 @@
<script
src=
"../src/jio.storage/replicaterevisionstorage.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>
</html>
test/tests.require.js
View file @
9beab765
...
...
@@ -37,6 +37,9 @@
"
replicaterevisionstorage_tests
"
:
"
jio.storage/replicaterevisionstorage.tests
"
,
"
splitstorage
"
:
"
../src/jio.storage/splitstorage
"
,
"
splitstorage_tests
"
:
"
jio.storage/splitstorage.tests
"
,
"
qunit
"
:
"
../lib/qunit/qunit
"
,
"
sinon
"
:
"
../lib/sinon/sinon
"
,
"
sinon_qunit
"
:
"
../lib/sinon/sinon-qunit
"
...
...
@@ -56,6 +59,7 @@
"
indexstorage_tests
"
,
"
gidstorage_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