- From: Tomasz Pluskiewicz <tomasz@t-code.pl>
- Date: Thu, 19 Jun 2014 13:23:11 +0200
- To: Dave Longley <dlongley@digitalbazaar.com>
- Cc: public-linked-json@w3.org, tomasz@t-code.pl
On Thu, Jun 19, 2014 at 1:10 AM, Dave Longley
<dlongley@digitalbazaar.com> wrote:
> On 06/18/2014 05:20 PM, Tomasz Pluskiewicz wrote:
>> Hi
>>
>> I'm trying to use the jsonld with Angular and in tests I want to
>> replace the default documentLoader with $http service so that I can
>> mock the responses.
>>
>> I assumed that because $http already returns a promise it would be
>> enough to simply use a function like
>>
>> jsonld.documentLoader = function (url) {
>>    return $http.get(url);
>> }
>>
>> as replacement for whatever is currently set.
>>
>> Unfortunately it doesn't work. What's would be correct way to do that?
>
> That's because the value that promise resolves to isn't what is required
> by the JSON-LD API spec. It requires that the promise resolve to a
> "RemoteDocument":
>
> http://www.w3.org/TR/json-ld-api/#idl-def-RemoteDocument
>
> I didn't test this, but it should be pretty close to what you want:
>
> jsonld.documentLoader = function(url) {
>   return $http.get(url).then(function(response) {
>     return {
>       contextUrl: null,
>       document: response.data,
>       documentUrl: url
>     }
>   });
> };
>
> Hopefully that works for you.
>
Unfortunately it's not that easy. I'm not very experienced with
JavaScript or Angular. I created a fiddle [1] similar to my failing
code.
As is, XHR fails, because it's a CORS request. If you uncomment the
two lines two weird things happen (or don't happen). First, $http mock
fails saying there aren't any pending requests and none of the
console.log called in callbacks are invoked. Which is weird, because
it means that even the $http promise is never resolved. I tried to
debug it but I get lost somewhere inside jsonld/angular. Also there
isn't any other exception being caught bu Chrome dev tools.
Any ideas? Hasn't someone already done that?
Thanks,
Tom
[1] http://jsfiddle.net/tpluscode/R5acr/12/
>
> -Dave
>
> --
> Dave Longley
> CTO
> Digital Bazaar, Inc.
>
Received on Thursday, 19 June 2014 11:24:46 UTC