echonok/project-lvl2-s333

View on GitHub
src/formatters/plain.js

Summary

Maintainability
A
0 mins
Test Coverage
import _ from 'lodash';

const renderDifferences = (differences, parentName = '') => {
  const arr = differences.map((key) => {
    const {
      name, type, value1, value2, children,
    } = key;

    switch (type) {
      case 'object':
        return renderDifferences(children, `${parentName}${name}.`);
      case 'added':
        return `Property ${parentName}${name} was added with value: ${value2}`;
      case 'deleted':
        return `Property ${parentName}${name} was removed`;
      case 'unchanged':
        return null;
      case 'changed':
        return `Property ${parentName}${name} was updated. From ${value1} to ${value2}`;
      default:
        throw new Error();
    }
  });
  return `${_.flatten(_.filter(arr, sub => sub)).join('\n')}`;
};

export default renderDifferences;