Skip to content

Commit

Permalink
Merge branch 'naruaway-auto-scope-nested-patch' into auto-scope
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre Medeiros committed Nov 28, 2015
2 parents a1db7c8 + cf845d4 commit 70444c5
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/http-driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,6 @@ function normalizeRequestOptions(reqOptions) {
}
}

function isolateSource(response$$, scope) {
return response$$.filter(res$ =>
Array.isArray(res$.request._namespace) &&
res$.request._namespace.indexOf(scope) !== -1
)
}

function isolateSink(request$, scope) {
return request$.map(req => {
if (typeof req === `string`) {
Expand All @@ -119,6 +112,16 @@ function isolateSink(request$, scope) {
})
}

function isolateSource(response$$, scope) {
let isolatedResponse$$ = response$$.filter(res$ =>
Array.isArray(res$.request._namespace) &&
res$.request._namespace.indexOf(scope) !== -1
)
isolatedResponse$$.isolateSource = isolateSource
isolatedResponse$$.isolateSink = isolateSink
return isolatedResponse$$
}

function makeHTTPDriver({eager = false} = {eager: false}) {
return function httpDriver(request$) {
let response$$ = request$
Expand Down
23 changes: 23 additions & 0 deletions test/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,29 @@ function run(uri) {
});

describe('isolateSource and isolateSink', function () {
it('should exist on the HTTP Source (response$$)', function(done) {
var httpDriver = makeHTTPDriver();
var request$ = new Rx.Subject();
var response$$ = httpDriver(request$);

assert.strictEqual(typeof response$$.isolateSource, 'function');
assert.strictEqual(typeof response$$.isolateSink, 'function');
done();
});

it('should exist on a scoped HTTP Source (response$$)', function(done) {
var httpDriver = makeHTTPDriver();
var request$ = new Rx.Subject();
var response$$ = httpDriver(request$);

var scopedRequest$ = response$$.isolateSink(request$, 'foo');
var scopedResponse$$ = response$$.isolateSource(response$$, 'foo');

assert.strictEqual(typeof scopedResponse$$.isolateSource, 'function');
assert.strictEqual(typeof scopedResponse$$.isolateSink, 'function');
done();
});

it('should hide responses from outside the scope',
function(done) {
var httpDriver = makeHTTPDriver();
Expand Down

0 comments on commit 70444c5

Please sign in to comment.