diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a95d6c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +dist/ +.env +.env.local +.env.*.local +*.log +.DS_Store +coverage/ diff --git a/README.md b/README.md index a70037b..b6883cc 100644 --- a/README.md +++ b/README.md @@ -1 +1,19 @@ -# nodejs-practice-repository \ No newline at end of file +# nodejs-practice-repository + +A Node.js practice repo for learning JavaScript utilities and TDD. + +## Getting Started + +**Prerequisites:** Node.js and npm installed. + +```bash +# Clone the repo +git clone https://github.com/jbb-codes/nodejs-practice-repository.git +cd nodejs-practice-repository + +# Install dependencies +npm install + +# Run tests +npm test +``` diff --git a/package-lock.json b/package-lock.json index 8fce75c..8e2718d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "name": "nodejs-practice-repository", "version": "1.0.0", - "license": "ISC", + "license": "MIT", "devDependencies": { "jest": "^29.7.0" } diff --git a/src/utils/reverseString.js b/src/utils/reverseString.js new file mode 100644 index 0000000..0fa26c6 --- /dev/null +++ b/src/utils/reverseString.js @@ -0,0 +1,17 @@ +/** + * Author: Jarren Bess + * Date: 2 June 2026 + * File: reverseString.js + * Description: Utility function to reverse a string. + */ +"use strict"; + +function reverseString(str) { + if (typeof str !== "string") { + throw new Error("Input must be a string"); + } + + return str.split("").reverse().join(""); +} + +module.exports = { reverseString }; diff --git a/test/utils/reverseString.spec.js b/test/utils/reverseString.spec.js new file mode 100644 index 0000000..adb19a6 --- /dev/null +++ b/test/utils/reverseString.spec.js @@ -0,0 +1,25 @@ +/** + * Author: Jarren Bess + * Date: 2 June 2026 + * File: reverseString.spec.js + * Description: Tests for the reverseString utility function. + */ +"use strict"; + +const { reverseString } = require("../../src/utils/reverseString"); + +describe("reverseString", () => { + it("should reverse a regular string", () => { + const result = reverseString("hello"); + expect(result).toBe("olleh"); + }); + + it("should return an empty string when given an empty string", () => { + const result = reverseString(""); + expect(result).toBe(""); + }); + + it("should throw an error when given a non-string input", () => { + expect(() => reverseString(123)).toThrow("Input must be a string"); + }); +});