From ff835bd476dec4710458823bea3d63e333f6dfb5 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 22 Aug 2017 10:54:52 -0700 Subject: [PATCH] Added and completed all of the test functions for data-and-functions 1 and 2. --- .../src/functions/getActiveUsers.js | 15 ++++++++++++++ .../src/functions/getMostExpensiveProduct.js | 15 ++++++++++++++ .../src/functions/getOrderInfo.js | 20 +++++++++++++++++++ .../src/functions/getProductById.js | 11 ++++++++++ .../src/functions/getUserById.js | 9 +++++++++ .../src/functions/getProductById.js | 11 ++++++++++ .../src/functions/getProductsForOrder.js | 18 +++++++++++++++++ .../src/functions/getTotalPriceForOrder.js | 18 +++++++++++++++++ 8 files changed, 117 insertions(+) create mode 100644 data-and-functions-1/src/functions/getActiveUsers.js create mode 100644 data-and-functions-1/src/functions/getMostExpensiveProduct.js create mode 100644 data-and-functions-1/src/functions/getOrderInfo.js create mode 100644 data-and-functions-1/src/functions/getProductById.js create mode 100644 data-and-functions-1/src/functions/getUserById.js create mode 100644 data-and-functions-2/src/functions/getProductById.js create mode 100644 data-and-functions-2/src/functions/getProductsForOrder.js create mode 100644 data-and-functions-2/src/functions/getTotalPriceForOrder.js diff --git a/data-and-functions-1/src/functions/getActiveUsers.js b/data-and-functions-1/src/functions/getActiveUsers.js new file mode 100644 index 0000000..54fba94 --- /dev/null +++ b/data-and-functions-1/src/functions/getActiveUsers.js @@ -0,0 +1,15 @@ +const getActiveUsers = (data) => { + if (data == null || data.users == null) { + return null + } else { + const activeUsers = [] + data.users.forEach((u) => { + if (u.accountActive === true) { + activeUsers.push(u) + } + }) + return activeUsers + } +} + +export default getActiveUsers diff --git a/data-and-functions-1/src/functions/getMostExpensiveProduct.js b/data-and-functions-1/src/functions/getMostExpensiveProduct.js new file mode 100644 index 0000000..f6771e0 --- /dev/null +++ b/data-and-functions-1/src/functions/getMostExpensiveProduct.js @@ -0,0 +1,15 @@ +const getMostExpensiveProduct = (data) => { + if (data == null || data.products == null) { + return null + } else { + let mostExpensive = data.products[0] + data.products.forEach((p) => { + if (mostExpensive.price < p.price) { + mostExpensive = p + } + }) + return mostExpensive + } +} + +export default getMostExpensiveProduct diff --git a/data-and-functions-1/src/functions/getOrderInfo.js b/data-and-functions-1/src/functions/getOrderInfo.js new file mode 100644 index 0000000..eb180d5 --- /dev/null +++ b/data-and-functions-1/src/functions/getOrderInfo.js @@ -0,0 +1,20 @@ +import getProductById from './getProductById' +import getUserById from './getUserById' + +const getOrderInfo = (data) => { + if (data == null || data.orders == null) { + return null + } else { + const orders = [] + data.orders.forEach((o) => { + orders.push({ + orderId: o.id, + price: getProductById(data, o.productId).price, + userName: getUserById(data, o.userId).name + }) + }) + return orders + } +} + +export default getOrderInfo diff --git a/data-and-functions-1/src/functions/getProductById.js b/data-and-functions-1/src/functions/getProductById.js new file mode 100644 index 0000000..0c38091 --- /dev/null +++ b/data-and-functions-1/src/functions/getProductById.js @@ -0,0 +1,11 @@ +const getProductById = (data, id) => { + if (data == null || data.products == null || id == null) { + return null + } else { + return data.products.find((p) => { + return p.id === id + }) + } +} + +export default getProductById diff --git a/data-and-functions-1/src/functions/getUserById.js b/data-and-functions-1/src/functions/getUserById.js new file mode 100644 index 0000000..81160de --- /dev/null +++ b/data-and-functions-1/src/functions/getUserById.js @@ -0,0 +1,9 @@ +const getUserById = (data, id) => { + if (data == null || id == null || data.users == null) { + return null + } else { + return data.users.find((u) => u.id === id) + } +} + +export default getUserById diff --git a/data-and-functions-2/src/functions/getProductById.js b/data-and-functions-2/src/functions/getProductById.js new file mode 100644 index 0000000..0c38091 --- /dev/null +++ b/data-and-functions-2/src/functions/getProductById.js @@ -0,0 +1,11 @@ +const getProductById = (data, id) => { + if (data == null || data.products == null || id == null) { + return null + } else { + return data.products.find((p) => { + return p.id === id + }) + } +} + +export default getProductById diff --git a/data-and-functions-2/src/functions/getProductsForOrder.js b/data-and-functions-2/src/functions/getProductsForOrder.js new file mode 100644 index 0000000..ae61891 --- /dev/null +++ b/data-and-functions-2/src/functions/getProductsForOrder.js @@ -0,0 +1,18 @@ +import getProductById from './getProductById' + +const getProductsForOrder = (data, id) => { + if (data == null || id == null || data.orders == null) { + throw new Error('Missing data or ID') + } + const order = data.orders.find((o) => o.id === id) + if (order === undefined) { + return null + } + const productArray = [] + order.products.forEach((p) => { + productArray.push(getProductById(data, p)) + }) + return productArray +} + +export default getProductsForOrder diff --git a/data-and-functions-2/src/functions/getTotalPriceForOrder.js b/data-and-functions-2/src/functions/getTotalPriceForOrder.js new file mode 100644 index 0000000..0b22c60 --- /dev/null +++ b/data-and-functions-2/src/functions/getTotalPriceForOrder.js @@ -0,0 +1,18 @@ +import getProductById from './getProductById' + +const getTotalPriceForOrder = (data, id) => { + if (data == null || id == null || data.orders == null) { + throw new Error('Missing data, id, or orders.') + } + const order = data.orders.find((o) => o.id === id) + if (order === undefined) { + return null + } + let totalPrice = 0 + order.products.forEach((p) => { + totalPrice += getProductById(data, p).price + }) + return totalPrice +} + +export default getTotalPriceForOrder