|
|
@ -0,0 +1,79 @@ |
|
|
|
# Smokeball JavaScript Coding Challenge |
|
|
|
|
|
|
|
## System Requirements |
|
|
|
|
|
|
|
The coding challenge requires the following to be installed on your development machine; |
|
|
|
* [nodejs](https://nodejs.org/en/download/) version 10 or above. |
|
|
|
* A [git](https://git-scm.com/downloads) client. |
|
|
|
|
|
|
|
## Installation |
|
|
|
|
|
|
|
1. Fork the `javascript-developer-test` repository to your personal github account. |
|
|
|
2. Clone the `javascript-developer-test` repository from your personal github account onto your development machine. |
|
|
|
3. Open a terminal and `cd` into the root directory of the `javascript-developer-test` repository. |
|
|
|
4. Execute `npm install` in the terminal. |
|
|
|
|
|
|
|
## Challenge Instructions |
|
|
|
|
|
|
|
Your challenge is to implement the `getArnieQuotes()` function, which is exported from `./src/get-arnie-quotes.js`. |
|
|
|
|
|
|
|
The `getArnieQuotes()` function accepts an array of strings, with each string containing a URL. |
|
|
|
|
|
|
|
The unit tests in `./src/get-arnie-quotes.test.js` will provide pre-defined URLs to the function and test your function's implementation. To run the unit tests, execute `npm test` in the terminal. |
|
|
|
|
|
|
|
The goal is to write an implementation of `getArnieQuotes` that passes all unit tests. |
|
|
|
|
|
|
|
To pass the unit tests, `getArnieQuotes()` must perform the following each URL passed in; |
|
|
|
|
|
|
|
1. Perform a HTTP GET on the URL |
|
|
|
2. If the HTTP status code of the response is 200, push an object to the results array with a single key `"Arnie Quote"` and the HTTP response body's `message` property as the key's associated value. |
|
|
|
3. If the HTTP status code of the response is not 200, push an object to the results array with a single key `"FAILURE"` and the HTTP response body's `message` property as the key's associated value. |
|
|
|
|
|
|
|
Finally, the `getArnieQuotes()` function must return the overall results array. |
|
|
|
|
|
|
|
Note that in this challenge, the HTTP calls are mocked. You *must* use the provided `httpGet` function to perform your HTTP requests. |
|
|
|
|
|
|
|
## Tips |
|
|
|
* Only modify the `get-arnie-quotes.js` file. |
|
|
|
* You may introduce additional internal functions in `get-arnie-quotes.js` |
|
|
|
* Exploring all of the code files may provide useful hints. |
|
|
|
* We are most impressed with readable code that works. |
|
|
|
|
|
|
|
## Submission |
|
|
|
|
|
|
|
Once all unit tests pass, push your code upstream then send us the link to the github repo with your solution. |
|
|
|
|
|
|
|
## Docs |
|
|
|
|
|
|
|
### `getArnieQuotes(urls)` |
|
|
|
|
|
|
|
```jsdoc |
|
|
|
Executes a HTTP GET request on each of the URLs, transforms each of the HTTP responses according to the challenge instructions and returns the results. |
|
|
|
|
|
|
|
@param {string[]} urls The urls to be requested |
|
|
|
@return {Promise} A promise which resolves to a results array. |
|
|
|
|
|
|
|
An example results array: |
|
|
|
|
|
|
|
[ |
|
|
|
{ 'Arnie Quote': 'Some cool quote' }, |
|
|
|
{ 'FAILURE: 'Your request has been terminated' }, |
|
|
|
] |
|
|
|
``` |
|
|
|
|
|
|
|
### `httpGet(url)` |
|
|
|
|
|
|
|
```jsdoc |
|
|
|
Executes a faked HTTP GET request on the passed URL. |
|
|
|
|
|
|
|
@param {string} url The url upon which to perform a HTTP GET |
|
|
|
@return {Promise} A promise which resolves to a HTTP response. |
|
|
|
|
|
|
|
An example HTTP response: |
|
|
|
|
|
|
|
{ |
|
|
|
status: 200, |
|
|
|
body: "{ 'message': 'Some cool arnie quote' }" // JSON string |
|
|
|
} |
|
|
|
|
|
|
|
``` |