'use strict';
var ArrayList = require('./mocks/dw.util.Collection');

module.exports = function toProductMock(mock) {
    if (!mock || typeof mock === 'function' || mock instanceof ArrayList) {
        return mock;
    }

    var result = {};
    if (typeof mock === 'object') {
        Object.keys(mock).forEach(function (item) {
            if (typeof mock[item] === 'object') {
                if (mock[item] && mock[item].type === 'function') {
                    var innerMock = typeof mock[item].return !== 'undefined'
                        ? toProductMock(mock[item].return)
                        : toProductMock(mock[item]);
                    result[item] = function () { return innerMock; };
                } else {
                    result[item] = toProductMock(mock[item]);
                }
            } else if (item !== 'function' || item !== 'return') {
                result[item] = mock[item];
            }
        });
    } else {
        result = mock;
    }

    return result;
};
