Skip to content
Snippets Groups Projects
postfach-mail-pdf-button.component.spec.ts 5.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • ///
    /// Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
    /// Ministerpräsidenten des Landes Schleswig-Holstein
    /// Staatskanzlei
    /// Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
    ///
    /// Lizenziert unter der EUPL, Version 1.2 oder - sobald
    /// diese von der Europäischen Kommission genehmigt wurden -
    /// Folgeversionen der EUPL ("Lizenz");
    /// Sie dürfen dieses Werk ausschließlich gemäß
    /// dieser Lizenz nutzen.
    /// Eine Kopie der Lizenz finden Sie hier:
    ///
    /// https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
    ///
    /// Sofern nicht durch anwendbare Rechtsvorschriften
    /// gefordert oder in schriftlicher Form vereinbart, wird
    /// die unter der Lizenz verbreitete Software "so wie sie
    /// ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
    /// ausdrücklich oder stillschweigend - verbreitet.
    /// Die sprachspezifischen Genehmigungen und Beschränkungen
    /// unter der Lizenz sind dem Lizenztext zu entnehmen.
    ///
    
    
    import { ComponentFixture, TestBed } from '@angular/core/testing';
    import { PostfachMailListResource, PostfachNachrichtenCount } from '@goofy-client/postfach-shared';
    import { getElementFromFixture } from '@goofy-client/test-utils';
    import { ButtonWithSpinnerComponent } from '@goofy-client/ui';
    import { createPostfachMailListResource } from 'libs/postfach-shared/test/postfach';
    import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
    import { MockComponent } from 'ng-mocks';
    import { PostfachMailPdfButtonComponent } from './postfach-mail-pdf-button.component';
    
    describe('PostfachMailPdfButtonComponent', () => {
    	let component: PostfachMailPdfButtonComponent;
    	let fixture: ComponentFixture<PostfachMailPdfButtonComponent>;
    
    	const pdfExportButton: string = getDataTestIdOf('postfach-pdf-export-button');
    	const pdfExportLabelButton: string = getDataTestIdOf('postfach-pdf-export-label-button');
    
    	beforeEach(async () => {
    		await TestBed.configureTestingModule({
    			declarations: [
    				PostfachMailPdfButtonComponent,
    				MockComponent(ButtonWithSpinnerComponent)
    			],
    		}).compileComponents();
    
    		fixture = TestBed.createComponent(PostfachMailPdfButtonComponent);
    		component = fixture.componentInstance;
    		fixture.detectChanges();
    	});
    
    	it('should create', () => {
    		expect(component).toBeTruthy();
    	});
    
    	describe('set postfachMailListResource', () => {
    
    		const postfachMailListResource: PostfachMailListResource = createPostfachMailListResource();
    
    		it('should set label', () => {
    			component.setLabel = jest.fn()
    
    			component.postfachMailListResource = postfachMailListResource;
    
    			expect(component.setLabel).toHaveBeenCalled();
    		})
    
    		it('should set postfachMailCount', () => {
    			component.setPostfachMailCount = jest.fn()
    
    			component.postfachMailListResource = postfachMailListResource
    
    			expect(component.setPostfachMailCount).toHaveBeenCalledWith(postfachMailListResource);
    		})
    	})
    
    	describe('setLabel', () => {
    
    		it('should not set if no mails exists', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.NONE;
    
    			component.setLabel();
    
    			expect(component.label).toBeUndefined();
    		})
    
    		it('should set for single mail exists', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.SINGLE;
    
    			component.setLabel();
    
    			expect(component.label).toBe('Nachricht exportieren');
    		})
    
    		it('should set for multiple mails exists', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.MULTIPLE;
    
    			component.setLabel();
    
    			expect(component.label).toBe('Nachrichten exportieren');
    		})
    	})
    
    	describe('export button with label', () => {
    
    		it('should show on existing emails and showButtoWithLabel true', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.SINGLE;
    			component.showButtonWithLabel = true;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportButton);
    
    			expect(element).toBeInTheDocument();
    		})
    
    		it('should hide on non existing emails', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.NONE;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportButton);
    
    			expect(element).not.toBeInTheDocument();
    		})
    
    		it('should hide showButtonWithLabel false', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.SINGLE;
    			component.showButtonWithLabel = false;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportButton);
    
    			expect(element).not.toBeInTheDocument();
    		})
    	})
    
    	describe('export button', () => {
    
    		it('should show on existing emails and showButtoWithLabel false', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.SINGLE;
    			component.showButtonWithLabel = false;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportLabelButton);
    
    			expect(element).toBeInTheDocument();
    		})
    
    		it('should hide on non existing emails', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.NONE;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportLabelButton);
    
    			expect(element).not.toBeInTheDocument();
    		})
    
    		it('should hide showButtonWithLabel true', () => {
    			component.postfachMailCount = PostfachNachrichtenCount.SINGLE;
    			component.showButtonWithLabel = true;
    			fixture.detectChanges();
    
    			const element = getElementFromFixture(fixture, pdfExportLabelButton);
    
    			expect(element).not.toBeInTheDocument();
    		})
    	})
    });