From 9bb252de00c1a87d0ad6063f340d20ab39b98984 Mon Sep 17 00:00:00 2001 From: Jason Zhu Date: Mon, 8 May 2023 20:12:45 +1000 Subject: [PATCH] Fixed pokedex.test.ts after splitting filter out of pokedex component --- src/features/Pokedex/__test__/pokedex.test.ts | 96 ++++++++----------- .../__test__/pokemon3_venusaur_Card.json | 6 ++ .../__test__/pokemon4_charmandar_Card.json | 6 ++ 3 files changed, 50 insertions(+), 58 deletions(-) create mode 100644 src/features/Pokedex/__test__/pokemon3_venusaur_Card.json create mode 100644 src/features/Pokedex/__test__/pokemon4_charmandar_Card.json diff --git a/src/features/Pokedex/__test__/pokedex.test.ts b/src/features/Pokedex/__test__/pokedex.test.ts index c43ea3c..f43d784 100644 --- a/src/features/Pokedex/__test__/pokedex.test.ts +++ b/src/features/Pokedex/__test__/pokedex.test.ts @@ -3,36 +3,38 @@ import { sortPokemonCardsByIdOrName, searchPokemonCardsByName, } from 'features/Pokedex/Pokedex'; -import { PokemonResponseData } from 'features/Pokedex/types/api'; -import pokemon3_Venusaur from 'features/Pokedex/__test__/pokemon3_Venusaur.json'; -import pokemon4_Charmander from 'features/Pokedex/__test__/pokemon4_charmander.json'; +import { PokemonCardProps } from 'components/PokemonCard'; +import pokemon3_venusaur_card from 'features/Pokedex/__test__/pokemon3_venusaur_Card.json'; +import pokemon4_charmander_card from 'features/Pokedex/__test__/pokemon4_charmandar_Card.json'; import { AppStore } from 'app/store'; import { configureStore } from '@reduxjs/toolkit'; import { pokedexSlice } from 'features/Pokedex/pokedexSlice'; -import { pokedexApi } from 'features/Pokedex/pokedexApi'; +import { filterSlice } from 'features/Filters/filterSlice'; +import { filterApi } from 'features/Filters/filterApi'; import { listenerMiddleware } from 'app/listenerMiddleware'; let store: AppStore; describe('pokedex Component', () => { - describe('filterPokemonByType works correctly', () => { - beforeEach(() => { - store = configureStore({ - reducer: { - pokedex: pokedexSlice.reducer, - [pokedexApi.reducerPath]: pokedexApi.reducer, - }, - middleware: getDefaultMiddleware => - getDefaultMiddleware().concat( - pokedexApi.middleware, - listenerMiddleware.middleware, - ), - }); + beforeEach(() => { + store = configureStore({ + reducer: { + pokedex: pokedexSlice.reducer, + filter: filterSlice.reducer, + [filterApi.reducerPath]: filterApi.reducer, + }, + middleware: getDefaultMiddleware => + getDefaultMiddleware().concat( + filterApi.middleware, + listenerMiddleware.middleware, + ), }); + }); - const pokemonList: PokemonResponseData[] = [ - pokemon3_Venusaur, - pokemon4_Charmander, + describe('filterPokemonByType works correctly', () => { + const pokemonList: PokemonCardProps[] = [ + pokemon3_venusaur_card, + pokemon4_charmander_card, ]; it('should return all PokemonCard if the selected type is "All Types"', () => { @@ -45,69 +47,47 @@ describe('pokedex Component', () => { const selectedType = 'fire'; const filteredList = filterPokemonCardsByType(pokemonList, selectedType); const allPokemonAreOfTypeFire = filteredList.every(pokemon => - pokemon.types.some(type => type.type.name === selectedType), + pokemon.types.some(type => type === selectedType), ); expect(allPokemonAreOfTypeFire).toBe(true); }); }); describe('sortPokemonsByIdOrName works correctly', () => { - beforeEach(() => { - store = configureStore({ - reducer: { - pokedex: pokedexSlice.reducer, - [pokedexApi.reducerPath]: pokedexApi.reducer, - }, - middleware: getDefaultMiddleware => - getDefaultMiddleware().concat( - pokedexApi.middleware, - listenerMiddleware.middleware, - ), - }); - }); - - const pokemonList: PokemonResponseData[] = [ - pokemon3_Venusaur, - pokemon4_Charmander, + const pokemonList: PokemonCardProps[] = [ + pokemon3_venusaur_card, + pokemon4_charmander_card, ]; it('should sort by id if the selected sort is "id"', () => { const selectedSort = 'id'; const sortedList = sortPokemonCardsByIdOrName(pokemonList, selectedSort); - expect(sortedList).toEqual([pokemon3_Venusaur, pokemon4_Charmander]); + expect(sortedList).toEqual([ + pokemon3_venusaur_card, + pokemon4_charmander_card, + ]); }); it('should sort by name if the selected sort is "name"', () => { const selectedSort = 'name'; const sortedList = sortPokemonCardsByIdOrName(pokemonList, selectedSort); - expect(sortedList).toEqual([pokemon4_Charmander, pokemon3_Venusaur]); + expect(sortedList).toEqual([ + pokemon4_charmander_card, + pokemon3_venusaur_card, + ]); }); }); describe('searchPokemonByName works correctly', () => { - beforeEach(() => { - store = configureStore({ - reducer: { - pokedex: pokedexSlice.reducer, - [pokedexApi.reducerPath]: pokedexApi.reducer, - }, - middleware: getDefaultMiddleware => - getDefaultMiddleware().concat( - pokedexApi.middleware, - listenerMiddleware.middleware, - ), - }); - }); - - const pokemonList: PokemonResponseData[] = [ - pokemon3_Venusaur, - pokemon4_Charmander, + const pokemonList: PokemonCardProps[] = [ + pokemon3_venusaur_card, + pokemon4_charmander_card, ]; it('should search by name correctly', () => { const searchName = 'char'; const searchedList = searchPokemonCardsByName(pokemonList, searchName); expect(searchedList).toHaveLength(1); - expect(searchedList[0]).toEqual(pokemon4_Charmander); + expect(searchedList[0]).toEqual(pokemon4_charmander_card); }); }); }); diff --git a/src/features/Pokedex/__test__/pokemon3_venusaur_Card.json b/src/features/Pokedex/__test__/pokemon3_venusaur_Card.json new file mode 100644 index 0000000..750df8a --- /dev/null +++ b/src/features/Pokedex/__test__/pokemon3_venusaur_Card.json @@ -0,0 +1,6 @@ +{ + "id": 3, + "name": "venusaur", + "image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/3.svg", + "types": ["grass", "poison"] +} diff --git a/src/features/Pokedex/__test__/pokemon4_charmandar_Card.json b/src/features/Pokedex/__test__/pokemon4_charmandar_Card.json new file mode 100644 index 0000000..6126df4 --- /dev/null +++ b/src/features/Pokedex/__test__/pokemon4_charmandar_Card.json @@ -0,0 +1,6 @@ +{ + "id": 4, + "name": "charmander", + "image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/dream-world/4.svg", + "types": ["fire"] +}