superdesk/superdesk-client-core

View on GitHub
e2e/client/specs/helpers/subscribers.ts

Summary

Maintainability
D
2 days
Test Coverage
/* eslint-disable newline-per-chained-call */

import {element, browser, by} from 'protractor';
import {nav} from './utils';

class Subscribers {
    cancelSubscriberButton: any;
    list: any;
    saveSubscriberButton: any;
    get: () => void;
    getSubscriber: (name: any) => any;
    getCount: (index?: any) => any;
    edit: (name: any) => void;
    setType: (ingestType: any) => void;
    setDestinationFormat: (ingestType: any) => void;
    cancel: () => void;

    constructor() {
        this.list = element.all(by.repeater('subscriber in subscribers'));
        this.saveSubscriberButton = element(by.css('[ng-click="save()"]'));
        this.cancelSubscriberButton = element(by.css('[ng-click="cancel()"]'));

        this.get = function() {
            nav('/settings/publish');
            browser.sleep(500);
        };

        this.getSubscriber = function(name) {
            return this.list.filter((elem, index) =>
                elem.element(by.binding('subscriber.name'))
                    .getText()
                    .then((text) => text.toUpperCase() === name.toUpperCase()),
            );
        };

        this.getCount = function(index) {
            return this.list.count();
        };

        this.edit = function(name) {
            this.getSubscriber(name).then((rows) => {
                rows[0].click();
                rows[0].element(by.className('icon-pencil')).click();
                browser.sleep(500);
            });
        };

        this.setType = function(ingestType) {
            element(by.id('subType')).all(by.tagName('option'))
                .filter((elem, index) => elem.getText().then((label) => label.toLowerCase().indexOf(ingestType) > -1))
                .then((options) => {
                    options[0].click();
                });
        };

        this.setDestinationFormat = function(ingestType) {
            element(by.id('destination-format')).all(by.tagName('option'))
                .filter((elem, index) => elem.getText().then((label) => label.toLowerCase().indexOf(ingestType) > -1))
                .then((options) => {
                    options[0].click();
                });
        };

        this.cancel = function() {
            this.cancelSubscriberButton.click();
        };
    }
}

export const subscribers = new Subscribers();