UNPKG

@storybook/angular

Version:

Storybook for Angular: Develop Angular components in isolation with hot reloading.

158 lines (157 loc) 4.75 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { vi, expect, describe, it } from 'vitest'; import { Component } from '@angular/core'; import { moduleMetadata, applicationConfig } from './decorators'; const defaultContext = { componentId: 'unspecified', kind: 'unspecified', title: 'unspecified', id: 'unspecified', name: 'unspecified', story: 'unspecified', tags: [], parameters: {}, initialArgs: {}, args: {}, argTypes: {}, globals: {}, globalTypes: {}, storyGlobals: {}, reporting: { reports: [], addReport: vi.fn(), }, hooks: {}, loaded: {}, originalStoryFn: vi.fn(), viewMode: 'story', abortSignal: undefined, canvasElement: undefined, step: undefined, context: undefined, canvas: undefined, userEvent: undefined, mount: undefined, }; defaultContext.context = defaultContext; class MockModule { } class MockModuleTwo { } class MockService { } let MockComponent = class MockComponent { }; MockComponent = __decorate([ Component({}) ], MockComponent); describe('applicationConfig', () => { const provider1 = () => { }; const provider2 = () => { }; it('should apply global config', () => { expect(applicationConfig({ providers: [provider1], })(() => ({}), defaultContext)).toEqual({ applicationConfig: { providers: [provider1], }, }); }); it('should apply story config', () => { expect(applicationConfig({ providers: [], })(() => ({ applicationConfig: { providers: [provider2], }, }), { ...defaultContext, })).toEqual({ applicationConfig: { providers: [provider2], }, }); }); it('should merge global and story config', () => { expect(applicationConfig({ providers: [provider1], })(() => ({ applicationConfig: { providers: [provider2], }, }), { ...defaultContext, })).toEqual({ applicationConfig: { providers: [provider1, provider2], }, }); }); }); describe('moduleMetadata', () => { it('should add metadata to a story without it', () => { const result = moduleMetadata({ imports: [MockModule], providers: [MockService], })(() => ({}), // deepscan-disable-next-line defaultContext); expect(result).toEqual({ moduleMetadata: { declarations: [], entryComponents: [], imports: [MockModule], schemas: [], providers: [MockService], }, }); }); it('should combine with individual metadata on a story', () => { const result = moduleMetadata({ imports: [MockModule], })(() => ({ component: MockComponent, moduleMetadata: { imports: [MockModuleTwo], providers: [MockService], }, }), // deepscan-disable-next-line defaultContext); expect(result).toEqual({ component: MockComponent, moduleMetadata: { declarations: [], entryComponents: [], imports: [MockModule, MockModuleTwo], schemas: [], providers: [MockService], }, }); }); it('should return the original metadata if passed null', () => { const result = moduleMetadata(null)(() => ({ component: MockComponent, moduleMetadata: { providers: [MockService], }, }), // deepscan-disable-next-line defaultContext); expect(result).toEqual({ component: MockComponent, moduleMetadata: { declarations: [], entryComponents: [], imports: [], schemas: [], providers: [MockService], }, }); }); });