UNPKG

10.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Notification, Observable, Subscription } from 'rxjs';\nimport { TestScheduler } from 'rxjs/testing';\nimport { isEqual } from 'lodash';\n\nimport {\n getTestScheduler,\n initTestScheduler,\n resetTestScheduler,\n} from './src/scheduler';\nimport {\n TestColdObservable,\n TestHotObservable,\n TestObservable,\n} from './src/test-observables';\nimport { unparseMarble } from './src/marble-unparser';\nimport { mapSymbolsToNotifications } from './src/map-symbols-to-notifications';\nimport { TestMessages } from './src/types';\n\nexport {\n getTestScheduler,\n initTestScheduler,\n resetTestScheduler,\n} from './src/scheduler';\n\nexport function hot(\n marbles: string,\n values?: any,\n error?: any,\n): TestHotObservable {\n return new TestHotObservable(marbles.trim(), values, error);\n}\n\nexport function cold(\n marbles: string,\n values?: any,\n error?: any,\n): TestColdObservable {\n return new TestColdObservable(marbles.trim(), values, error);\n}\n\nexport function time(marbles: string): number {\n return getTestScheduler().createTime(marbles.trim());\n}\n\ndeclare global {\n namespace jasmine {\n interface Matchers<T> {\n toBeObservable(expected: TestObservable): boolean;\n toHaveSubscriptions(marbles: string | string[]): boolean;\n }\n }\n namespace jest {\n interface Matchers<R> {\n toBeObservable(expected: TestObservable): R;\n toHaveSubscriptions(marbles: string | string[]): R;\n }\n }\n}\n\n/*\n * Based on source code found in rxjs library\n * https://github.com/ReactiveX/rxjs/blob/master/src/testing/TestScheduler.ts\n *\n */\nfunction materializeInnerObservable(\n observable: Observable<any>,\n outerFrame: number,\n): TestMessages {\n const messages: TestMessages = [];\n const scheduler = getTestScheduler();\n\n observable.subscribe(\n (value) => {\n messages.push({\n frame: scheduler.frame - outerFrame,\n notification: Notification.createNext(value),\n });\n },\n (err) => {\n messages.push({\n frame: scheduler.frame - outerFrame,\n notification: Notification.createError(err),\n });\n },\n () => {\n messages.push({\n frame: scheduler.frame - outerFrame,\n notification: Notification.createComplete(),\n });\n },\n );\n return messages;\n}\n\nconst toHaveSubscriptionsComparer = function (\n actual: TestObservable,\n marbles: string | string[],\n) {\n const marblesArray: string[] =\n typeof marbles === 'string' ? [marbles] : marbles;\n const results = marblesArray.map((marbles) =>\n TestScheduler.parseMarblesAsSubscriptions(marbles),\n );\n\n expect(results).toEqual(actual.getSubscriptions());\n\n return { pass: true, message: () => '' };\n};\n\nconst toBeObservableComparer = function (\n actual: TestObservable,\n fixture: TestObservable,\n) {\n const results: TestMessages = [];\n let subscription: Subscription;\n const scheduler = getTestScheduler();\n\n scheduler.schedule(() => {\n subscription = actual.subscribe(\n (x: any) => {\n let value = x;\n\n // Support Observable-of-Observables\n if (x instanceof Observable) {\n value = materializeInnerObservable(value, scheduler.frame);\n }\n\n results.push({\n frame: scheduler.frame,\n notification: Notification.createNext(value),\n });\n },\n (err: any) => {\n results.push({\n frame: scheduler.frame,\n notification: Notification.createError(err),\n });\n },\n () => {\n results.push({\n frame: scheduler.frame,\n notification: Notification.createComplete(),\n });\n },\n );\n });\n scheduler.flush();\n\n const expected = TestScheduler.parseMarbles(\n fixture.marbles,\n fixture.values,\n fixture.error,\n true,\n true,\n );\n\n try {\n expect(results).toEqual(expected);\n\n return { pass: true, message: () => '' };\n } catch (e) {\n const mapNotificationToSymbol = buildNotificationToSymbolMapper(\n fixture.marbles,\n expected,\n isEqual,\n );\n const receivedMarble = unparseMarble(results, mapNotificationToSymbol);\n\n const message = formatMessage(\n fixture.marbles,\n expected,\n receivedMarble,\n results,\n );\n\n return { pass: false, message: () => message };\n }\n};\n\nexport function addMatchers() {\n if (!(<any>expect).extend) {\n jasmine.addMatchers({\n toHaveSubscriptions: () => ({\n compare: toHaveSubscriptionsComparer,\n }),\n toBeObservable: (utils, equalityTester) => ({\n compare: toBeObservableComparer,\n }),\n });\n } else {\n (<any>expect).extend({\n toHaveSubscriptions: toHaveSubscriptionsComparer,\n toBeObservable: toBeObservableComparer,\n });\n }\n}\n\nfunction buildNotificationToSymbolMapper(\n expectedMarbles: string,\n expectedMessages: TestMessages,\n equalityFn: (a: any, b: any) => boolean,\n) {\n const symbolsToNotificationsMap = mapSymbolsToNotifications(\n expectedMarbles,\n expectedMessages,\n );\n return (notification: Notification<any>) => {\n const mapped = Object.keys(symbolsToNotificationsMap).find((key) => {\n return equalityFn(symbolsToNotificationsMap[key], notification);\n })!;\n\n return mapped || '?';\n };\n}\n\nfunction formatMessage(\n expectedMarbles: string,\n expectedMessages: TestMessages,\n receivedMarbles: string,\n receivedMessages: TestMessages,\n) {\n return `\n Expected: ${expectedMarbles},\n Received: ${receivedMarbles},\n \n Expected:\n ${JSON.stringify(expectedMessages)}\n \n Received:\n ${JSON.stringify(receivedMessages)},\n `;\n}\n\nexport function setupEnvironment() {\n beforeAll(() => addMatchers());\n\n beforeEach(() => initTestScheduler());\n afterEach(() => {\n getTestScheduler().flush();\n resetTestScheduler();\n });\n}\n\nsetupEnvironment();\n"]}
\No newline at end of file