All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.masterthought.cucumber.charts.JsChartUtil Maven / Gradle / Ivy

Go to download

Provides pretty html reports for Cucumber. It works by generating html from the cucumber json file.

There is a newer version: 5.8.2
Show newest version
package net.masterthought.cucumber.charts;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import net.masterthought.cucumber.TagObject;
import net.masterthought.cucumber.util.Status;

public class JsChartUtil {

    private static Logger logger = Logger.getLogger("net.masterthought.cucumber.charts.jschartutil");

    public List orderStepsByValue(int numberTotalPassed, int numberTotalFailed, int numberTotalSkipped,
            int numberTotalPending, int numberTotalUndefined, int numberTotalMissing) {

        Map map = new HashMap<>();

        map.put(Status.PASSED, numberTotalPassed);
        map.put(Status.FAILED, numberTotalFailed);
        map.put(Status.SKIPPED, numberTotalSkipped);
        map.put(Status.PENDING, numberTotalPending);
        map.put(Status.UNDEFINED, numberTotalUndefined);
        map.put(Status.MISSING, numberTotalMissing);

        return getKeysSortedByValue(map);
    }

    public List orderScenariosByValue(int numberTotalPassed, int numberTotalFailed) {

        Map map = new HashMap<>();

        map.put(Status.PASSED, numberTotalPassed);
        map.put(Status.FAILED, numberTotalFailed);

        return getKeysSortedByValue(map);
    }

    private List getKeysSortedByValue(Map map) {
        List> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator>() {
            @Override
            public int compare(Map.Entry o1, Map.Entry o2) {
                int valueOrder = o2.getValue().compareTo(o1.getValue());
                if (valueOrder != 0) {
                    return valueOrder;
                }
                else {
                    // if values are the same keep the same order as implemented in Status
                    int colorOrder = o1.getKey().compareTo(o2.getKey());
                    return colorOrder;
                }
            }
        });


        List keys = new ArrayList();
        for (Map.Entry entry : list) {
            keys.add(entry.getKey().color);
        }
        return keys;
    }

    public static String generateTagChartData(List tagObjectList) {
    	StringBuilder buffer = new StringBuilder();
        for (TagObject tag : tagObjectList) {
            buffer.append("[[");
            buffer.append(tag.getNumberOfPasses());
            buffer.append(",");
            buffer.append(tag.getNumberOfFailures());
            buffer.append(",");
            buffer.append(tag.getNumberOfSkipped());
            buffer.append(",");
            buffer.append(tag.getNumberOfPending());
            buffer.append("],");
            buffer.append("{label:'").append(tag.getTagName()).append("'}],");
        }
        return buffer.toString();
    }

    public static String getTags(List tagObjectList) {
        StringBuilder tags = new StringBuilder();

        if (!tagObjectList.isEmpty()) {
            for (TagObject tag : tagObjectList) {
                tags.append("'").append(tag.getTagName()).append("',");
            }

            tags.setLength(tags.length() - 1);
        }
        return "[" + tags.toString() + "]";
    }

    public static String generateTagChartDataForHighCharts(List tagObjectList) {
    	StringBuilder buffer = new StringBuilder();

        if (!tagObjectList.isEmpty()) {
            for (TagObject tag : tagObjectList) {
                // TODO: could be merged with generateTagChartData
                buffer.append("[");
                buffer.append(tag.getNumberOfPasses());
                buffer.append(",");
                buffer.append(tag.getNumberOfFailures());
                buffer.append(",");
                buffer.append(tag.getNumberOfSkipped());
                buffer.append(",");
                buffer.append(tag.getNumberOfPending());
                buffer.append("]");
                buffer.append(",");
            }

            buffer.setLength(buffer.length() - 1);
        }

        return "[" + buffer.toString() + "]";
    }



}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy