The All Star Code Lead Instructor JavaScript Assessment consists of 4 tasks, to be completed and turned in to dante@allstarcode.org as a GitHub gist.
-
Clone or download this repo.
-
Navigate into the repo from command line and before doing anything else, run the command
npm install
.- If any error occurs, run
npm init
. Hit enter for all the questions and enternpm install
again. - If command is not found for
npm install
ornpm init
, install node.js here: https://nodejs.org/en/download/ and repeat step #2.
- If any error occurs, run
-
Follow the prompts for each task and do your best!
- The tests folder contains test files in which your functions will be tested with. Feel free to look at the tests, but DO NOT edit them. These exact tests will be used to test your answers when you submit your work.
- Info on testing your work with the provided test specs is included at the end of the document.
- Write your code in pokemon.js in the cloned or downloaded folder.
- Construct and initialize a
Pokemon
object by passing in 5 arguments that corresponds to the following 5 properties in order:.name
,.attack
,.defense
,.health
, and.type
.- Example:
const charmander = new Pokemon("charmander", 12, 8, 30, "fire"); console.log(charmander.name); // charmander console.log(charmander.attack); // 12 console.log(charmander.defense); // 8 console.log(charmander.health); // 30 console.log(charmander.type); // fire
- Data type validation is not needed. You can assume that the following
property
: type pairing is always used:.name
: string.attack
: number.defense
: number.health
: number.type
: string
- Example:
- Implement a
takeDamage()
method for thePokemon
class which takes a number as an argument and reduces the.health
of thePokemon
by that number.- Note: If
.health
goes below 0, it should be set to 0 instead. - Example:
console.log(charmander.health); // 30 charmander.takeDamage(5); console.log(charmander.health); // 25 charmander.takeDamage(2000); console.log(charmander.health); // 0
- Note: If
- Implement an
attackOpponent()
method for thePokemon
class which takes aPokemon
object as an argument (the opponent being attacked). This method should call thetakeDamage()
method of the opposingPokemon
and provide the appropriate damage as an argument.
DAMAGE = CURRENT_POKEMON_ATTACK - OPPONENT_POKEMON_DEFENSE
.- Example:
const charmander = new Pokemon("charmander", 12, 8, 30, "fire"); const bulbasaur = new Pokemon("bulbasaur", 7, 9, 35, "grass/poison"); console.log(charmander.attack); // 12 console.log(bulbasaur.defense); // 9 // 12 attack - 9 defense = 3 damage console.log(bulbasaur.health); // 35 charmander.attackOpponent(bulbasaur); // charmander attacks bulbasaur console.log(bulbasaur.health); // 32
- Attacking a
Pokemon
should do 1 damage at the very least. Consider cases in which thePokemon
being attacked has a higher.defense
than the.attack
of the attackingPokemon
.
- Example:
- Implement a
display()
method for thePokemon
class which takes no arguments and returns a string with the Pokemon's.name
in all caps,.type
in all caps and in parenthesis, and.health
with a forward-slash, " / ", followed by the.health
thePokemon
was initialized with.- Example:
const pikachu = new Pokemon("pikachu", 9, 10, 25, "electric"); pikachu.display(); // PIKACHU (ELECTRIC) 25/25 pikachu.health = 12; pikachu.display(); // PIKACHU (ELECTRIC) 12/25
- Example:
- The tests are setup with commands to test your answers for each individual task. This will only work properly if there are: - No errors for `npm install` command - No modifications to any files in the `tests` folder - No modifications to any scripts commands in the `package.json` file - No modifications to `module.exports` at the end of `pokemon.js`
- Use the following command to test your work in the cloned or downloaded folder:
npm run test
to test your Pokemon class and methods.
The output for a test:
Test Suites: 1 failed, 1 total
Tests: 7 failed, 1 passed, 8 total
Snapshots: 0 total
Time: 1.781s
Ran all test suites matching /tests\\pokemon.test.js/i.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! teachingFellows@1.0.0 test_string: `jest tests/pokemon.test.js`
npm ERR! Exit status 1
Your output may look different based on the specific task and the number of tests passed/failed.
Take note of these 2 lines:
Test Suites: 1 failed, 1 total
Tests: 7 failed, 1 passed, 8 total
The output above indicates that the function only passed 1 out 8 tests 😢
You can scroll up the console to diagnose the errors by comparing the expected outputs and what your function returned.
For example:
Expected: "string"
Received: "undefined"
11 | it('should properly initialize all 5 traits', () => {
12 | const charmander = new Pokemon('Charmander', 100, 110, 130, 'fire');
> 13 | expect(typeof charmander.name).toBe('string');
| ^
The test failed because the program expected the output of typeof charmander.name
to be 'string'
, but received the output undefined
instead.
Your solutions will be tested with these exact test files. Your goal is to have your functions pass as many tests as possible.
REMEMBER: IT IS NOT NECESSARY TO PASS ALL TESTS TO BE HIRED. PLEASE SUBMIT WHATEVER YOU MANAGE TO COMPLETE!