diff --git a/requirement-sets/1-reading-writing-files/answer.txt b/requirement-sets/1-reading-writing-files/answer.txt new file mode 100644 index 0000000..dc34aa9 --- /dev/null +++ b/requirement-sets/1-reading-writing-files/answer.txt @@ -0,0 +1 @@ +count: 3 \ No newline at end of file diff --git a/requirement-sets/1-reading-writing-files/src/createDirectionObj.js b/requirement-sets/1-reading-writing-files/src/createDirectionObj.js new file mode 100644 index 0000000..94c7a32 --- /dev/null +++ b/requirement-sets/1-reading-writing-files/src/createDirectionObj.js @@ -0,0 +1,16 @@ +const createDirectionObj = (line) => { + let directionObj = {}; + for (let i = 0; i < line.length; i++) { + const direction = line[i]; + if (!directionObj[direction]) { + directionObj[direction] = 1; + } else { + directionObj[direction]++; + } + } + return directionObj; +}; + +module.exports = { + createDirectionObj +} \ No newline at end of file diff --git a/requirement-sets/1-reading-writing-files/src/index.js b/requirement-sets/1-reading-writing-files/src/index.js index ed849f4..558b866 100644 --- a/requirement-sets/1-reading-writing-files/src/index.js +++ b/requirement-sets/1-reading-writing-files/src/index.js @@ -1 +1,21 @@ +const { createDirectionObj } = require("./createDirectionObj.js") +const { input } = require("./input.js") +const fs = require("fs") + // run the program +const countSamePositions = () => { + let counter = 0 + for(let i = 0; i < input.length; i++) { + const directionObj = createDirectionObj(input[i]); + if (directionObj.N === directionObj.S && directionObj.W === directionObj.E) counter++ + } + return `count: ${counter}` +} + + +fs.writeFile("answer.txt", countSamePositions(), (err) => { + if (err) throw err + console.log("YaaY!") +}); + + diff --git a/requirement-sets/1-reading-writing-files/src/input.js b/requirement-sets/1-reading-writing-files/src/input.js new file mode 100644 index 0000000..4497446 --- /dev/null +++ b/requirement-sets/1-reading-writing-files/src/input.js @@ -0,0 +1,10 @@ +const path = require("path"); +const fs = require("fs"); +const input = fs + .readFileSync(path.join(__dirname, "../input.txt"), "utf8") + .trim() + .split("\n"); + + module.exports = { + input +} \ No newline at end of file diff --git a/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.js b/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.js index c6de991..5d80eb5 100644 --- a/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.js +++ b/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.js @@ -11,9 +11,26 @@ GET https://api.npms.io/v2/search/suggestions?q=react * greater than 10.x.x */ +const fetch = require("node-fetch"); + +const doCountMajorVersionsAbove10 = (data) => { + let number = 0; + for (const dataInfo of data) { + const version = Number(dataInfo.package.version.substring(0, 2)); + if (version >= 10) number++; + } + return number; +}; module.exports = async function countMajorVersionsAbove10() { // TODO + let number = 0; + const url = "https://api.npms.io/v2/search/suggestions?q=react"; - return number + await fetch(url) + .then((res) => res.json()) + .then((data) => { + number = doCountMajorVersionsAbove10(data); + }); + return number; }; diff --git a/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.test.js b/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.test.js index c762d92..bd5ddc1 100644 --- a/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.test.js +++ b/requirement-sets/3-test-js-grad/src/01-count-major-versions-above-10/index.test.js @@ -1,20 +1,22 @@ -jest.mock('node-fetch'); -jest.mock('axios'); +jest.mock("node-fetch"); +jest.mock("axios"); -const fetch = require('node-fetch') -const axios = require('axios') +const fetch = require("node-fetch"); +const axios = require("axios"); -const dependencies = require('../__mocks__/dependencies.json') -const countMajorVersionsAbove10 = require('.'); +const dependencies = require("../__mocks__/dependencies.json"); +const countMajorVersionsAbove10 = require("."); -describe('countMajorVersionsAbove10', () => { +describe("countMajorVersionsAbove10", () => { beforeEach(() => { - fetch.mockReturnValue(Promise.resolve({json: () => Promise.resolve(dependencies)})) - axios.get.mockReturnValue(Promise.resolve({ data: dependencies })) - }) + fetch.mockReturnValue( + Promise.resolve({ json: () => Promise.resolve(dependencies) }) + ); + axios.get.mockReturnValue(Promise.resolve({ data: dependencies })); + }); - it('returns the correct count of packages above version 10.x.x', async () => { - const answer = await countMajorVersionsAbove10() + it("returns the correct count of packages above version 10.x.x", async () => { + const answer = await countMajorVersionsAbove10(); expect(answer).toEqual(4); }); diff --git a/requirement-sets/3-test-js-grad/src/02-oldest-package-name/index.js b/requirement-sets/3-test-js-grad/src/02-oldest-package-name/index.js index 93d773f..9a7d3e5 100644 --- a/requirement-sets/3-test-js-grad/src/02-oldest-package-name/index.js +++ b/requirement-sets/3-test-js-grad/src/02-oldest-package-name/index.js @@ -10,9 +10,23 @@ GET https://api.npms.io/v2/search/suggestions?q=react * the "name" of the package that has the oldest "date" value */ +const fetch = require("node-fetch"); module.exports = async function oldestPackageName() { // TODO - - return name + let name; + const url = "https://api.npms.io/v2/search/suggestions?q=react"; + await fetch(url) + .then((res) => res.json()) + .then((data) => { + const dataSortByDate = data.sort((a, b) => { + const indexA = data.indexOf(a); + const dateA = new Date(data[indexA].package.date); + const indexB = data.indexOf(b); + const dateB = new Date(data[indexB].package.date); + return dateA - dateB; + }); + name = dataSortByDate[0].package.name; + }); + return name; };