Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
jio_mebibou
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
Alexandra Rogova
jio_mebibou
Commits
7e85fd8e
Commit
7e85fd8e
authored
Apr 30, 2015
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ERP5: add post method
portal_type and parent_relative_url properties are required.
parent
cbdf41ad
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
208 additions
and
0 deletions
+208
-0
src/jio.storage/erp5storage.js
src/jio.storage/erp5storage.js
+29
-0
test/jio.storage/erp5storage.tests.js
test/jio.storage/erp5storage.tests.js
+179
-0
No files found.
src/jio.storage/erp5storage.js
View file @
7e85fd8e
...
...
@@ -142,6 +142,35 @@
});
};
ERP5Storage
.
prototype
.
post
=
function
(
data
)
{
var
context
=
this
,
new_id
;
return
getSiteDocument
(
this
)
.
push
(
function
(
site_hal
)
{
var
form_data
=
new
FormData
();
form_data
.
append
(
"
portal_type
"
,
data
.
portal_type
);
form_data
.
append
(
"
parent_relative_url
"
,
data
.
parent_relative_url
);
return
jIO
.
util
.
ajax
({
type
:
"
POST
"
,
url
:
site_hal
.
_actions
.
add
.
href
,
data
:
form_data
,
xhrFields
:
{
withCredentials
:
true
}
});
})
.
push
(
function
(
evt
)
{
var
location
=
evt
.
target
.
getResponseHeader
(
"
X-Location
"
),
uri
=
new
URI
(
location
);
new_id
=
uri
.
segment
(
2
);
return
context
.
put
(
new_id
,
data
);
})
.
push
(
function
()
{
return
new_id
;
});
};
ERP5Storage
.
prototype
.
put
=
function
(
id
,
data
)
{
var
context
=
this
;
...
...
test/jio.storage/erp5storage.tests.js
View file @
7e85fd8e
...
...
@@ -13,6 +13,7 @@
domain
=
"
https://example.org
"
,
traverse_template
=
domain
+
"
?mode=traverse{&relative_url,view}
"
,
search_template
=
domain
+
"
?mode=search{&query,select_list*,limit*}
"
,
add_url
=
domain
+
"
lets?add=somedocument
"
,
root_hateoas
=
JSON
.
stringify
({
"
_links
"
:
{
traverse
:
{
...
...
@@ -23,6 +24,11 @@
href
:
search_template
,
templated
:
true
}
},
"
_actions
"
:
{
add
:
{
href
:
add_url
}
}
});
...
...
@@ -1259,4 +1265,177 @@
});
});
/////////////////////////////////////////////////////////////////
// erp5Storage.post
/////////////////////////////////////////////////////////////////
module
(
"
erp5Storage.post
"
,
{
setup
:
function
()
{
this
.
server
=
sinon
.
fakeServer
.
create
();
this
.
server
.
autoRespond
=
true
;
this
.
server
.
autoRespondAfter
=
5
;
this
.
spy
=
sinon
.
spy
(
FormData
.
prototype
,
"
append
"
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
bar_view
"
});
},
teardown
:
function
()
{
this
.
server
.
restore
();
delete
this
.
server
;
this
.
spy
.
restore
();
delete
this
.
spy
;
}
});
test
(
"
post ERP5 document
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
context
=
this
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
)
+
"
&view=bar_view
"
,
put_url
=
domain
+
"
azertytrea?f=g
"
,
document_hateoas
=
JSON
.
stringify
({
// Kept property
"
title
"
:
"
foo
"
,
// Remove all _ properties
"
_bar
"
:
"
john doo
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
},
"
_embedded
"
:
{
"
_view
"
:
{
form_id
:
{
key
:
"
form_id
"
,
"
default
"
:
"
Base_view
"
},
my_title
:
{
key
:
"
field_my_title
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
StringField
"
},
my_id
:
{
key
:
"
field_my_id
"
,
"
default
"
:
""
,
editable
:
true
,
type
:
"
StringField
"
},
my_title_non_editable
:
{
key
:
"
field_my_title_non_editable
"
,
"
default
"
:
"
foo
"
,
editable
:
false
,
type
:
"
StringField
"
},
my_start_date
:
{
key
:
"
field_my_start_date
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
DateTimeField
"
},
your_reference
:
{
key
:
"
field_your_title
"
,
"
default
"
:
"
bar
"
,
editable
:
true
,
type
:
"
StringField
"
},
sort_index
:
{
key
:
"
field_sort_index
"
,
"
default
"
:
"
foobar
"
,
editable
:
true
,
type
:
"
StringField
"
},
"
_actions
"
:
{
put
:
{
href
:
put_url
}
}
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
this
.
server
.
respondWith
(
"
POST
"
,
put_url
,
[
204
,
{
"
Content-Type
"
:
"
text/html
"
},
""
]);
this
.
server
.
respondWith
(
"
POST
"
,
add_url
,
[
201
,
{
"
Content-Type
"
:
"
text/html
"
,
"
X-Location
"
:
"
urn:jio:get:
"
+
id
},
""
]);
stop
();
expect
(
33
);
this
.
jio
.
post
({
title
:
"
barè
"
,
id
:
"
foo
"
,
portal_type
:
"
Foo
"
,
parent_relative_url
:
"
foo_module
"
})
.
then
(
function
(
result
)
{
equal
(
result
,
id
);
equal
(
server
.
requests
.
length
,
5
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
equal
(
server
.
requests
[
1
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
1
].
url
,
add_url
);
ok
(
server
.
requests
[
1
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
equal
(
server
.
requests
[
2
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
2
].
url
,
domain
);
equal
(
server
.
requests
[
2
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
2
].
withCredentials
,
true
);
equal
(
server
.
requests
[
3
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
3
].
url
,
traverse_url
);
equal
(
server
.
requests
[
3
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
3
].
withCredentials
,
true
);
equal
(
server
.
requests
[
4
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
4
].
url
,
put_url
);
ok
(
server
.
requests
[
4
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
4
].
withCredentials
,
true
);
equal
(
context
.
spy
.
callCount
,
5
,
"
FormData.append count
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
0
],
"
portal_type
"
,
"
First append call
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
1
],
"
Foo
"
,
"
First append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
0
],
"
parent_relative_url
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
1
],
"
foo_module
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
0
],
"
form_id
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
1
],
"
Base_view
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
0
],
"
field_my_title
"
,
"
Fourthappend call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
1
],
"
barè
"
,
"
Fourth append call
"
);
equal
(
context
.
spy
.
getCall
(
4
).
args
[
0
],
"
field_my_id
"
,
"
Fifth append call
"
);
equal
(
context
.
spy
.
getCall
(
4
).
args
[
1
],
"
foo
"
,
"
Fifth append call
"
);
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
}(
jIO
,
QUnit
,
Blob
,
sinon
,
encodeURIComponent
,
FormData
));
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