Skip to content

Commit 206a0a0

Browse files
authored
Merge pull request #41 from ReactiveDB/fix/qt-combine
fix(QueryToken): 修复 combine() 误用 Selector.prototype.concat 的问题
2 parents 984e7eb + f74747b commit 206a0a0

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

src/storage/modules/QueryToken.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export class QueryToken<T> {
7676
combineAll<Observable<Selector<T>>, Selector<T>[]>(),
7777
map((r) => {
7878
const first = r.shift()
79-
return first!.concat(...r)
79+
return first!.combine(...r)
8080
})
8181
)
8282
return new QueryToken<T>(newSelector$)

test/specs/storage/modules/QueryToken.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ export default describe('QueryToken Testcase', () => {
101101
mockSelector2 = new MockSelector(generateMockTestdata(tasks2))
102102
queryToken2 = new QueryToken(Observable.of(mockSelector2) as any)
103103
combined = queryToken.combine(queryToken2)
104+
combined.selector$.subscribe((mock) => {
105+
expect(mock['__test_label_selector_kind__']).to.equal('by combine')
106+
})
104107
})
105108

106109
it('should get a new QueryToken', () => {
@@ -169,6 +172,9 @@ export default describe('QueryToken Testcase', () => {
169172
mockSelector2 = new MockSelector(generateMockTestdata(tasks2))
170173
queryToken2 = new QueryToken(Observable.of(mockSelector2) as any)
171174
concated = queryToken.concat(queryToken2)
175+
concated.selector$.subscribe((mock) => {
176+
expect(mock['__test_label_selector_kind__']).to.equal('by concat')
177+
})
172178
})
173179

174180
it('should get new QueryToken', () => {

test/utils/mocks/Selector.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ export class MockSelector<T> {
4343
return this.mapFn(this.change$.take(1))
4444
}
4545

46-
concat = this.combine
46+
concat(... metas: MockSelector<T>[]) {
47+
const dist = this.combine(...metas)
48+
dist['__test_label_selector_kind__'] = 'by concat'
49+
return dist
50+
}
4751

4852
combine(... metas: MockSelector<T>[]) {
4953
metas.unshift(this)
@@ -60,6 +64,7 @@ export class MockSelector<T> {
6064
.combineAll()
6165
.map((r: T[][]) => r.reduce((acc, val) => acc.concat(val)))
6266
}
67+
dist['__test_label_selector_kind__'] = 'by combine'
6368
return dist
6469
}
6570

0 commit comments

Comments
 (0)