├── src ├── router │ ├── package.json │ ├── routes.js │ └── Router.js ├── store │ ├── package.json │ ├── store.js │ ├── __test__ │ │ ├── deck.store.test.js │ │ └── card.store.test.js │ ├── deck.store.js │ └── card.store.js ├── components │ ├── Deck │ │ ├── package.json │ │ ├── Deck.js │ │ └── __test__ │ │ │ └── Deck.test.js │ ├── CardGrid │ │ ├── package.json │ │ ├── CardGrid.js │ │ └── __test__ │ │ │ └── CardGrid.test.js │ ├── CardInput │ │ ├── package.json │ │ ├── CardInput.js │ │ └── __test__ │ │ │ └── CardInput.test.js │ ├── DeckForm │ │ ├── package.json │ │ ├── DeckForm.js │ │ └── __test__ │ │ │ └── DeckForm.test.js │ ├── DeckGrid │ │ ├── package.json │ │ ├── DeckGrid.js │ │ └── __test__ │ │ │ └── DeckGrid.test.js │ ├── SearchBar │ │ ├── package.json │ │ ├── __test__ │ │ │ └── SearchBar.test.js │ │ └── SearchBar.js │ ├── PokemonCard │ │ ├── package.json │ │ ├── PokemonCard.js │ │ └── __test__ │ │ │ └── PokemonCard.test.js │ ├── PokemonType │ │ ├── package.json │ │ ├── PokemonType.js │ │ └── __test__ │ │ │ └── PokemonType.test.js │ ├── PokeballLoading.js │ │ ├── package.json │ │ ├── pokeball.gif │ │ ├── PokeballLoading.js │ │ └── __test__ │ │ │ └── PokeballLoading.test.js │ └── EmptyResult │ │ ├── EmptyResult.js │ │ └── __test__ │ │ └── EmptyResult.test.js ├── views │ ├── DeckEditView.js │ ├── DeckListView.js │ ├── __test__ │ │ ├── DeckDetailsView.test.js │ │ ├── DeckListView.test.js │ │ └── DeckAddView.test.js │ ├── DeckAddView.js │ └── DeckDetailsView.js ├── assets │ ├── images │ │ ├── fire.png │ │ ├── dragon.png │ │ ├── fairy.png │ │ ├── grass.png │ │ ├── metal.png │ │ ├── water.png │ │ ├── colorless.png │ │ ├── darkness.png │ │ ├── deck_back.png │ │ ├── fighting.png │ │ ├── lightning.png │ │ ├── psychic.png │ │ ├── psyduck.png │ │ ├── psyduck.webp │ │ └── card_types.png │ └── style │ │ ├── components │ │ ├── bootstrap4 │ │ │ ├── utilities │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _overflow.scss │ │ │ │ ├── _screenreaders.scss │ │ │ │ ├── _visibility.scss │ │ │ │ ├── _shadows.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _align.scss │ │ │ │ ├── _background.scss │ │ │ │ ├── _stretched-link.scss │ │ │ │ ├── _sizing.scss │ │ │ │ ├── _position.scss │ │ │ │ ├── _display.scss │ │ │ │ ├── _embed.scss │ │ │ │ ├── _borders.scss │ │ │ │ ├── _text.scss │ │ │ │ ├── _spacing.scss │ │ │ │ └── _flex.scss │ │ │ ├── _media.scss │ │ │ ├── mixins │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _size.scss │ │ │ │ ├── _lists.scss │ │ │ │ ├── _text-truncate.scss │ │ │ │ ├── _visibility.scss │ │ │ │ ├── _resize.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _nav-divider.scss │ │ │ │ ├── _text-hide.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _transition.scss │ │ │ │ ├── _text-emphasis.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _reset-text.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _background-variant.scss │ │ │ │ ├── _box-shadow.scss │ │ │ │ ├── _deprecate.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _hover.scss │ │ │ │ ├── _table-row.scss │ │ │ │ ├── _image.scss │ │ │ │ ├── _border-radius.scss │ │ │ │ ├── _caret.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _grid-framework.scss │ │ │ │ ├── _gradients.scss │ │ │ │ └── _buttons.scss │ │ │ ├── _transitions.scss │ │ │ ├── bootstrap-reboot.scss │ │ │ ├── _jumbotron.scss │ │ │ ├── _utilities.scss │ │ │ ├── _root.scss │ │ │ ├── bootstrap-grid.scss │ │ │ ├── bootstrap.scss │ │ │ ├── _close.scss │ │ │ ├── _toasts.scss │ │ │ ├── _code.scss │ │ │ ├── _grid.scss │ │ │ ├── _progress.scss │ │ │ ├── _mixins.scss │ │ │ ├── _spinners.scss │ │ │ ├── _images.scss │ │ │ ├── _badge.scss │ │ │ ├── _alert.scss │ │ │ ├── _breadcrumb.scss │ │ │ ├── _pagination.scss │ │ │ ├── _nav.scss │ │ │ ├── _type.scss │ │ │ ├── _functions.scss │ │ │ ├── _tooltip.scss │ │ │ ├── _buttons.scss │ │ │ ├── _print.scss │ │ │ ├── _button-group.scss │ │ │ ├── _tables.scss │ │ │ └── _list-group.scss │ │ └── project │ │ │ ├── card-grid.scss │ │ │ ├── empty-result.scss │ │ │ ├── pokeball-loading.scss │ │ │ ├── deck.scss │ │ │ └── card-input.scss │ │ ├── transitions │ │ └── _fade.scss │ │ ├── layout │ │ ├── _wrapper.scss │ │ ├── _router-loading-container.scss │ │ └── _header-app.scss │ │ ├── views │ │ └── _deck-details.scss │ │ ├── notifications │ │ ├── _toastify.scss │ │ └── toastify │ │ │ ├── _closeButton.scss │ │ │ ├── _variables.scss │ │ │ ├── animations │ │ │ ├── _zoom.scss │ │ │ ├── _flip.scss │ │ │ └── _slide.scss │ │ │ ├── _progressBar.scss │ │ │ ├── _toastContainer.scss │ │ │ └── _toast.scss │ │ └── base.scss ├── __mocks__ │ ├── axios-mock.js │ ├── utils.js │ ├── deck-state-builder.js │ ├── deck-builder.js │ ├── store-builder.js │ ├── card-state-builder.js │ ├── deck-form-provider-mock.js │ └── card-builder.js ├── api │ ├── Api.js │ ├── card.api.js │ └── __test__ │ │ ├── Api.test.js │ │ └── card.api.test.js ├── layout │ ├── View.js │ ├── Wrapper.js │ └── HeaderApp.js ├── utils │ ├── error-handler.js │ ├── sucess-handler.js │ └── __test__ │ │ ├── sucess-handler.test.js │ │ └── error-handler.test.js ├── App.test.js ├── setupTests.js ├── App.js ├── environment.js ├── filters │ ├── __test__ │ │ └── scored-search.test.js │ └── scored-search.js ├── index.js ├── logo.svg └── providers │ └── DeckFormProvider.js ├── public ├── favicon.ico ├── logo192.png ├── logo512.png ├── robots.txt ├── manifest.json └── index.html ├── README.md ├── .gitignore └── package.json /src/router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "Router.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/store/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "store.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/Deck/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "Deck.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/CardGrid/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "CardGrid.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/CardInput/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "CardInput.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/DeckForm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "DeckForm.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/DeckGrid/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "DeckGrid.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/SearchBar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "SearchBar.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/PokemonCard/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "mian": "PokemonCard.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/PokemonType/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "PokemonType.js" 3 | } 4 | -------------------------------------------------------------------------------- /src/components/PokeballLoading.js/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": "PokeballLoading.js" 3 | } 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/public/logo512.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/views/DeckEditView.js: -------------------------------------------------------------------------------- 1 | import DeckAddView from "./DeckAddView"; 2 | 3 | export default DeckAddView; -------------------------------------------------------------------------------- /src/assets/images/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/fire.png -------------------------------------------------------------------------------- /src/assets/style/components/bootstrap4/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/images/dragon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/dragon.png -------------------------------------------------------------------------------- /src/assets/images/fairy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/fairy.png -------------------------------------------------------------------------------- /src/assets/images/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/grass.png -------------------------------------------------------------------------------- /src/assets/images/metal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/metal.png -------------------------------------------------------------------------------- /src/assets/images/water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/water.png -------------------------------------------------------------------------------- /src/assets/style/transitions/_fade.scss: -------------------------------------------------------------------------------- 1 | .fade-in{ 2 | animation-duration: 0.3s; 3 | animation-name: fadeIn; 4 | } -------------------------------------------------------------------------------- /src/assets/images/colorless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/colorless.png -------------------------------------------------------------------------------- /src/assets/images/darkness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/darkness.png -------------------------------------------------------------------------------- /src/assets/images/deck_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/deck_back.png -------------------------------------------------------------------------------- /src/assets/images/fighting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/fighting.png -------------------------------------------------------------------------------- /src/assets/images/lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/lightning.png -------------------------------------------------------------------------------- /src/assets/images/psychic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/psychic.png -------------------------------------------------------------------------------- /src/assets/images/psyduck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/psyduck.png -------------------------------------------------------------------------------- /src/assets/images/psyduck.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/psyduck.webp -------------------------------------------------------------------------------- /src/assets/images/card_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/assets/images/card_types.png -------------------------------------------------------------------------------- /src/assets/style/layout/_wrapper.scss: -------------------------------------------------------------------------------- 1 | .wrapper{ 2 | padding-bottom: 24px; 3 | .header-app{ 4 | margin-bottom: 72px; 5 | } 6 | } -------------------------------------------------------------------------------- /src/components/PokeballLoading.js/pokeball.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sephh/workshop-react-jest/HEAD/src/components/PokeballLoading.js/pokeball.gif -------------------------------------------------------------------------------- /src/__mocks__/axios-mock.js: -------------------------------------------------------------------------------- 1 | import axiosMock from 'axios'; 2 | 3 | jest.mock('axios'); 4 | 5 | axiosMock.create = () => axiosMock; 6 | 7 | export default axiosMock; -------------------------------------------------------------------------------- /src/assets/style/components/bootstrap4/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /src/assets/style/components/bootstrap4/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/assets/style/views/_deck-details.scss: -------------------------------------------------------------------------------- 1 | .deck-details{ 2 | &__header { 3 | display: flex; 4 | align-items: center; 5 | } 6 | 7 | &__types{} 8 | 9 | &__supertypes{} 10 | } -------------------------------------------------------------------------------- /src/assets/style/layout/_router-loading-container.scss: -------------------------------------------------------------------------------- 1 | .router-loading-container{ 2 | width:100%; 3 | height: 100vh; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | } -------------------------------------------------------------------------------- /src/assets/style/components/bootstrap4/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /src/api/Api.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import getEnv from "../environment"; 3 | 4 | const {API, API_VERSION} = getEnv(); 5 | 6 | export default axios.create({ 7 | baseURL: `${API}/${API_VERSION}`, 8 | }); 9 | -------------------------------------------------------------------------------- /src/layout/View.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const View = ({children}) => { 4 | return ( 5 |