├── .github ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── LICENSE ├── README.md ├── client ├── .babelrc ├── .env.sample ├── .eslintrc.json ├── .prettierrc ├── package-lock.json ├── package.json ├── public │ ├── content.css │ ├── font │ │ ├── Lato-Bold.ttf │ │ ├── Lato-BoldItalic.ttf │ │ ├── Lato-Italic.ttf │ │ ├── Lato-Regular.ttf │ │ ├── NotoSansKR-Regular.otf │ │ ├── brand-icons.eot │ │ ├── brand-icons.ttf │ │ ├── brand-icons.woff │ │ ├── brand-icons.woff2 │ │ ├── icons.eot │ │ ├── icons.otf │ │ ├── icons.ttf │ │ ├── icons.woff │ │ ├── icons.woff2 │ │ ├── outline-icons.eot │ │ ├── outline-icons.ttf │ │ ├── outline-icons.woff │ │ └── outline-icons.woff2 │ ├── icon.png │ ├── image │ │ ├── 1 │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ └── 4.svg │ │ ├── 2 │ │ │ ├── 1.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ └── 4.svg │ │ ├── 3 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 4 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14-b.svg │ │ │ ├── 15-b.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 5 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 17.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 6 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 17.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 7 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 17.svg │ │ │ ├── 18.svg │ │ │ ├── 19.svg │ │ │ ├── 2.svg │ │ │ ├── 20.svg │ │ │ ├── 21.svg │ │ │ ├── 22.svg │ │ │ ├── 23.svg │ │ │ ├── 24.svg │ │ │ ├── 25.svg │ │ │ ├── 26.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 8 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 17.svg │ │ │ ├── 18.svg │ │ │ ├── 19.svg │ │ │ ├── 2.svg │ │ │ ├── 20.svg │ │ │ ├── 21.svg │ │ │ ├── 22.svg │ │ │ ├── 23.svg │ │ │ ├── 24.svg │ │ │ ├── 25.svg │ │ │ ├── 26.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 9 │ │ │ ├── 1.svg │ │ │ ├── 10-b.svg │ │ │ ├── 11.svg │ │ │ ├── 12-b.svg │ │ │ ├── 13-b.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 10 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 15.svg │ │ │ ├── 16.svg │ │ │ ├── 17.svg │ │ │ ├── 18.svg │ │ │ ├── 19.svg │ │ │ ├── 2.svg │ │ │ ├── 20.svg │ │ │ ├── 21.svg │ │ │ ├── 22.svg │ │ │ ├── 23.svg │ │ │ ├── 24.svg │ │ │ ├── 25.svg │ │ │ ├── 26.svg │ │ │ ├── 27.svg │ │ │ ├── 28.svg │ │ │ ├── 29.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 11 │ │ │ ├── 1.svg │ │ │ ├── 10.svg │ │ │ ├── 11.svg │ │ │ ├── 12.svg │ │ │ ├── 13.svg │ │ │ ├── 14.svg │ │ │ ├── 2.svg │ │ │ ├── 3.svg │ │ │ ├── 4.svg │ │ │ ├── 5.svg │ │ │ ├── 6.svg │ │ │ ├── 7.svg │ │ │ ├── 8.svg │ │ │ └── 9.svg │ │ ├── 1-btn.svg │ │ ├── 10-btn.svg │ │ ├── 11-btn.svg │ │ ├── 12-btn.svg │ │ ├── 13-btn.svg │ │ ├── 14-btn.svg │ │ ├── 15-btn.svg │ │ ├── 16-btn.svg │ │ ├── 17-btn.svg │ │ ├── 2-btn.svg │ │ ├── 3-btn.svg │ │ ├── 4-btn.svg │ │ ├── 5-btn.svg │ │ ├── 6-btn.svg │ │ ├── 7-btn.svg │ │ ├── 8-btn.svg │ │ ├── 9-btn.svg │ │ ├── chef.gif │ │ ├── formula.gif │ │ ├── giphy.gif │ │ ├── loading.gif │ │ ├── login.png │ │ ├── login2.png │ │ ├── login3.png │ │ ├── login4.png │ │ ├── logo.png │ │ ├── logout.png │ │ ├── logout2.png │ │ └── math.svg │ ├── index.html │ └── sementic.css ├── src │ ├── App.tsx │ ├── __tests__ │ │ ├── AlertItem.test.tsx │ │ ├── ButtomItem.test.tsx │ │ ├── DictionaryItem.test.tsx │ │ ├── DictionaryMenuItem.test.tsx │ │ ├── FontColorMenu.test.tsx │ │ ├── FontSizeMenu.test.tsx │ │ ├── IconMessage.test.tsx │ │ ├── Loading.test.tsx │ │ ├── MessageItem.test.tsx │ │ ├── PageItem.test.tsx │ │ ├── QrCode.test.tsx │ │ ├── TableItem.test.tsx │ │ ├── TextAreaItem.test.tsx │ │ └── __snapshots__ │ │ │ ├── QrCode.test.tsx.snap │ │ │ ├── TableItem.test.tsx.snap │ │ │ └── TextAreaItem.test.tsx.snap │ ├── components │ │ ├── Ingredients │ │ │ ├── AlertItem │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── ButtonItem │ │ │ │ └── index.tsx │ │ │ ├── CalculatorButton │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── CalculatorSymbol │ │ │ │ └── index.tsx │ │ │ ├── DictionaryItem │ │ │ │ └── index.tsx │ │ │ ├── DictionaryMenuItem │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── DropDownItem │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── FontColorMenu │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFontColorMenu.ts │ │ │ ├── FontSizeMenu │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFontSizeMenu.ts │ │ │ ├── FormulaItem │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFormulaItem.ts │ │ │ ├── IconMessage │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── Loading │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── MessageItem │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── PageTabItem │ │ │ │ ├── index.tsx │ │ │ │ └── usePageTabItem.ts │ │ │ ├── QrCode │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── RecommendItem │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── TableItem │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useTableItem.ts │ │ │ └── TextAreaItem │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useTextAreaItem.ts │ │ ├── Meal │ │ │ ├── CalculatorTab │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useCalculatorTab.ts │ │ │ ├── DictionaryHeader │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── DictionaryItemList │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── DictionaryTab │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useDictionaryTab.ts │ │ │ ├── FavoriteModal │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFavoriteModal.ts │ │ │ ├── FavoriteTab │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFavoriteTab.ts │ │ │ ├── FormatButtons │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFormatButtons.ts │ │ │ ├── FormulaList │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useFormulaList.ts │ │ │ ├── InputContents │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── MenuBar │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── MenuBarButtons │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── MenuBarInput │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── MenuBarOutput │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── OutputContents │ │ │ │ ├── index.tsx │ │ │ │ └── style.ts │ │ │ ├── OutputFormula │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useOutputFormula.ts │ │ │ ├── OutputFormulaBox │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── useOutputFormulaBox.ts │ │ │ └── PageTab │ │ │ │ ├── index.tsx │ │ │ │ ├── style.ts │ │ │ │ └── usePageTab.ts │ │ └── Set │ │ │ ├── Header │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ │ ├── Input │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ │ ├── Output │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ │ ├── ResizeHeader │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ │ └── SaveButtons │ │ │ ├── index.tsx │ │ │ ├── style.ts │ │ │ └── useSaveButtons.ts │ ├── contexts │ │ ├── index.ts │ │ ├── latex │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ └── user │ │ │ ├── actions.ts │ │ │ ├── index.ts │ │ │ ├── reducer.ts │ │ │ ├── thunk.ts │ │ │ └── types.ts │ ├── hooks │ │ ├── useCurrentTab.ts │ │ ├── useDebounce.ts │ │ ├── useInput.ts │ │ ├── useModal.tsx │ │ ├── useSelect.ts │ │ ├── useThrottle.ts │ │ └── useToggle.ts │ ├── index.tsx │ ├── lib │ │ ├── apis │ │ │ ├── common.ts │ │ │ └── favorite.ts │ │ ├── constants │ │ │ ├── calculator.ts │ │ │ ├── constants.ts │ │ │ ├── latex-dictionary.ts │ │ │ └── latex-header.ts │ │ └── utils │ │ │ ├── test-util.tsx │ │ │ ├── token.ts │ │ │ └── util.ts │ ├── pages │ │ └── MainPage.tsx │ └── setUpTest.ts ├── tsconfig.json └── webpack.config.js └── server ├── .env.sample ├── .eslintrc.js ├── .prettierrc ├── ormconfig.js ├── package-lock.json ├── package.json ├── public └── icon.png ├── src ├── app.ts ├── controllers │ ├── auth-controller.ts │ └── favorite-controller.ts ├── entity │ ├── Favorite.ts │ └── User.ts ├── repository │ ├── favorite-repository.ts │ └── user-repository.ts ├── router │ ├── auth-router.ts │ ├── favorite-router.ts │ └── index.ts ├── service │ ├── auth-service.ts │ ├── favorite-service.ts │ └── user-service.ts ├── types │ └── express │ │ └── index.d.ts ├── utils │ ├── constant.ts │ └── validator.ts └── views │ ├── index.pug │ └── layout.pug └── tsconfig.json /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## 예상 화면 2 | 3 | ## 기능 4 | 5 | - 기능1 6 | 7 | ## 요구사항 8 | 9 | - 상세1 10 | - 상세2 11 | - 상세3 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # 00 - 구현한 내용 2 | 3 | ## 관련 이슈 4 | 5 | ## 구현한 내용 6 | 7 | ## 실행 화면 8 | 9 | ## 논의할 사항 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 부스트캠프 2020 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /client/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env", "@babel/preset-react"] 3 | } -------------------------------------------------------------------------------- /client/.env.sample: -------------------------------------------------------------------------------- 1 | Client_ID= -------------------------------------------------------------------------------- /client/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true, 5 | "node": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "eslint-config-prettier", 10 | "plugin:react/recommended", 11 | "plugin:@typescript-eslint/recommended" 12 | ], 13 | "parser": "@typescript-eslint/parser", 14 | "parserOptions": { 15 | "ecmaFeatures": { 16 | "tsx": true 17 | }, 18 | "ecmaVersion": 12, 19 | "sourceType": "module" 20 | }, 21 | "plugins": ["react", "@typescript-eslint", "prettier"], 22 | "rules": { 23 | "prettier/prettier": [ 24 | "error", 25 | { 26 | "endOfLine": "auto" 27 | } 28 | ], 29 | "@typescript-eslint/no-explicit-any": "off" 30 | }, 31 | "overrides": [ 32 | { 33 | "files": ["*.js"], 34 | "rules": { 35 | "@typescript-eslint/no-var-requires": "off" 36 | } 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /client/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "tabWidth": 2, 4 | "trailingComma": "es5", 5 | "bracketSpacing": true, 6 | "printWidth": 100 7 | } 8 | -------------------------------------------------------------------------------- /client/public/font/Lato-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/Lato-Bold.ttf -------------------------------------------------------------------------------- /client/public/font/Lato-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/Lato-BoldItalic.ttf -------------------------------------------------------------------------------- /client/public/font/Lato-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/Lato-Italic.ttf -------------------------------------------------------------------------------- /client/public/font/Lato-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/Lato-Regular.ttf -------------------------------------------------------------------------------- /client/public/font/NotoSansKR-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/NotoSansKR-Regular.otf -------------------------------------------------------------------------------- /client/public/font/brand-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/brand-icons.eot -------------------------------------------------------------------------------- /client/public/font/brand-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/brand-icons.ttf -------------------------------------------------------------------------------- /client/public/font/brand-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/brand-icons.woff -------------------------------------------------------------------------------- /client/public/font/brand-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/brand-icons.woff2 -------------------------------------------------------------------------------- /client/public/font/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/icons.eot -------------------------------------------------------------------------------- /client/public/font/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/icons.otf -------------------------------------------------------------------------------- /client/public/font/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/icons.ttf -------------------------------------------------------------------------------- /client/public/font/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/icons.woff -------------------------------------------------------------------------------- /client/public/font/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/icons.woff2 -------------------------------------------------------------------------------- /client/public/font/outline-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/outline-icons.eot -------------------------------------------------------------------------------- /client/public/font/outline-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/outline-icons.ttf -------------------------------------------------------------------------------- /client/public/font/outline-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/outline-icons.woff -------------------------------------------------------------------------------- /client/public/font/outline-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/font/outline-icons.woff2 -------------------------------------------------------------------------------- /client/public/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/icon.png -------------------------------------------------------------------------------- /client/public/image/1-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/1/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/1/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/1/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/10.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/14.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/15.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/17.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/18.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/19.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/20.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/21.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/22.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/23.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/25.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/27.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/10/9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/10.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/11/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/2-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/2/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/2/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/2/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/2/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/3/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/4/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/4/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/4/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/10.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/5/9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/10.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/14.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/17.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/6/9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/7/21.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8-btn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/10.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/11.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/12.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/13.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/14.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/15.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/17.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/18.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/19.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/20.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/21.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/22.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/23.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/25.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/26.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/8/9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/9/3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/image/chef.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/chef.gif -------------------------------------------------------------------------------- /client/public/image/formula.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/formula.gif -------------------------------------------------------------------------------- /client/public/image/giphy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/giphy.gif -------------------------------------------------------------------------------- /client/public/image/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/loading.gif -------------------------------------------------------------------------------- /client/public/image/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/login.png -------------------------------------------------------------------------------- /client/public/image/login2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/login2.png -------------------------------------------------------------------------------- /client/public/image/login3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/login3.png -------------------------------------------------------------------------------- /client/public/image/login4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/login4.png -------------------------------------------------------------------------------- /client/public/image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/logo.png -------------------------------------------------------------------------------- /client/public/image/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/logout.png -------------------------------------------------------------------------------- /client/public/image/logout2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/boostcamp-2020/Project15-C-Client-Based-Formula-Editor/409fde8ec7e7eb288214498fb2efd292c37c7830/client/public/image/logout2.png -------------------------------------------------------------------------------- /client/public/image/math.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 수식 셰프 11 | 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /client/src/__tests__/AlertItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import '@testing-library/jest-dom'; 4 | import AlertItem from '@ingredients/AlertItem'; 5 | import { AlertMessage } from '@constants/constants'; 6 | 7 | describe('AlertItem TEST', () => { 8 | test('AlertItem Rendering TEST', () => { 9 | const { container } = render( 10 | 11 | ); 12 | 13 | expect(container).toHaveTextContent(AlertMessage.NEED_LOGIN_MESSAGE); 14 | expect(container).not.toBeEmptyDOMElement(); 15 | }); 16 | 17 | test('AlertItem > MessageBox Style TEST', () => { 18 | const { container } = render( 19 | 20 | ); 21 | const messageBox = container.querySelector('.globalFont'); 22 | 23 | expect(messageBox).toHaveStyle({ 24 | textAlign: 'center', 25 | fontSize: '20px', 26 | fontWeight: 'bold', 27 | }); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /client/src/__tests__/ButtomItem.test.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-empty-function */ 2 | import * as React from 'react'; 3 | import { render } from '@testing-library/react'; 4 | import '@testing-library/jest-dom'; 5 | import ButtonItem from '@ingredients/ButtonItem'; 6 | 7 | describe('Buttomitem TEST', () => { 8 | test('Buttomitem Rendering TEST ', () => { 9 | const { container } = render( {}} />); 10 | 11 | expect(container).toHaveTextContent('제목'); 12 | expect(container).not.toBeEmptyDOMElement(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /client/src/__tests__/DictionaryItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '../lib/utils/test-util'; 3 | import '@testing-library/jest-dom'; 4 | import DictionaryItem from '@ingredients/DictionaryItem'; 5 | 6 | describe('DictionaryItem TEST', () => { 7 | test('DictionaryItem Rendering 테스트 ', () => { 8 | const { container } = render( 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | ); 17 | const dictionaryItem = container.querySelector('td'); 18 | const stataicMathField = container.querySelector('span'); 19 | 20 | expect(dictionaryItem).not.toBeEmptyDOMElement(); 21 | expect(stataicMathField).toBeInTheDocument(); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /client/src/__tests__/DictionaryMenuItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import '@testing-library/jest-dom'; 4 | import DictionaryMenuItem from '@ingredients/DictionaryMenuItem'; 5 | 6 | describe('DictionaryMenuItem TEST', () => { 7 | test('DictionaryMenuItem Rendering TEST ', () => { 8 | const { container } = render(); 9 | const dictionaryMenuItem = container.querySelector('option'); 10 | 11 | expect(dictionaryMenuItem).toHaveTextContent('옵션제목'); 12 | expect(dictionaryMenuItem).not.toHaveAttribute('selected', true); 13 | expect(dictionaryMenuItem).toHaveStyle({ 14 | fontSize: '12px', 15 | height: '15px', 16 | }); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /client/src/__tests__/FontColorMenu.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '@utils/test-util'; 3 | import FontColorMenu from '@ingredients/FontColorMenu'; 4 | import '@testing-library/jest-dom'; 5 | 6 | test(' Test', () => { 7 | const { container } = render(); 8 | 9 | expect(container).toHaveStyle(` 10 | background-color: '#000000', 11 | `); 12 | }); 13 | -------------------------------------------------------------------------------- /client/src/__tests__/FontSizeMenu.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '@utils/test-util'; 3 | import FontSizeMenu from '@ingredients/FontSizeMenu'; 4 | import { FONT_SIZE_LISTS } from '@constants/constants'; 5 | import '@testing-library/jest-dom'; 6 | 7 | test(' Test', () => { 8 | const toggleSzieMenu = () => {}; 9 | const { container } = render(); 10 | 11 | FONT_SIZE_LISTS.forEach(({ size, checked }) => { 12 | expect(container).toHaveTextContent(size); 13 | if (size === '15') { 14 | expect(checked).toBeTruthy(); 15 | } else { 16 | expect(checked).toBeFalsy(); 17 | } 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /client/src/__tests__/IconMessage.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { getByTestId, render, screen, waitFor } from '@testing-library/react'; 3 | import IconMessage from '@ingredients/IconMessage/index'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('', () => { 7 | it('renders IconMessage Component', () => { 8 | const downloadImage = () => {}; 9 | const { container } = render( 10 | 16 | ); 17 | const test = screen.getByTestId('icon-message'); 18 | expect(test).toHaveClass('css-0'); 19 | expect(test).toBeVisible(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /client/src/__tests__/Loading.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render, screen, waitFor } from '@testing-library/react'; 3 | import Loading from '../components/Ingredients/Loading'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('Loading TEST', () => { 7 | test('Loading big 테스트 ', () => { 8 | const { container } = render(); 9 | 10 | expect(container).toHaveTextContent('수식 셰프'); 11 | expect(document.querySelector('.pencil')).toBeInTheDocument(); 12 | expect(document.querySelector('.pencil')).toHaveStyle({ 13 | width: '180px', 14 | }); 15 | expect(document.querySelector('.top')).toBeInTheDocument(); 16 | expect(document.querySelector('.stroke_big')).toBeInTheDocument(); 17 | }); 18 | 19 | test('Loading mini 테스트 ', () => { 20 | const { container } = render(); 21 | 22 | expect(container).toHaveTextContent('수식 셰프'); 23 | expect(document.querySelector('.pencil')).toBeInTheDocument(); 24 | expect(document.querySelector('.pencil')).toHaveStyle({ 25 | width: '100px', 26 | }); 27 | expect(document.querySelector('.top')).toBeInTheDocument(); 28 | expect(document.querySelector('.stroke_mini')).toBeInTheDocument(); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /client/src/__tests__/MessageItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render, screen, waitFor } from '@testing-library/react'; 3 | import MessageItem from '../components/Ingredients/MessageItem'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('MessageItem TEST', () => { 7 | test('MessageItem title 테스트 ', () => { 8 | const { container } = render(); 9 | 10 | expect(container).toHaveTextContent('MessageItem'); 11 | }); 12 | 13 | test('MessageItem children 테스트 ', () => { 14 | const { container } = render( 15 | 16 |
테스트 중
17 |
18 | ); 19 | 20 | expect(container).toHaveTextContent('MessageItem'); 21 | expect(document.querySelector('div')).toBeInTheDocument(); 22 | expect(container).toHaveTextContent('테스트 중'); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /client/src/__tests__/PageItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '../lib/utils/test-util'; 3 | import PageTabItem from '../components/Ingredients/PageTabItem'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('PageItem TEST', () => { 7 | const testInfo = { 8 | id: 0, 9 | latex: '\\frac', 10 | fontSize: '16', 11 | fontColor: 'black', 12 | textAlign: 'center', 13 | }; 14 | 15 | test('PageItem title 테스트 ', () => { 16 | const { container } = render(); 17 | 18 | expect(container).toHaveTextContent('수식 4'); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /client/src/__tests__/QrCode.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '../lib/utils/test-util'; 3 | import QrCode from '../components/Ingredients/QrCode/index'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('', () => { 7 | it('renders QrCode', () => { 8 | const { container } = render(); 9 | expect(container).toMatchSnapshot(); 10 | }); 11 | it('in canvers', () => { 12 | const { container } = render(); 13 | expect(container.querySelector('canvas')).toBeInTheDocument; 14 | expect(container.querySelector('canvas')).toHaveStyle({ 15 | width: '128px', 16 | height: '128px', 17 | }); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /client/src/__tests__/TableItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '../lib/utils/test-util'; 3 | import TableItem from '../components/Ingredients/TableItem/index'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('', () => { 7 | const data = [{ id: 1, latex: '1+1', title: '나의 latex' }]; 8 | it('renders TableItem', () => { 9 | const { container } = render( 10 | 11 | ); 12 | expect(container).toMatchSnapshot(); 13 | }); 14 | it('in Table', () => { 15 | const { container, getByText } = render( 16 | 17 | ); 18 | expect(container.querySelector('table')).toBeInTheDocument; 19 | const header = getByText('title'); 20 | expect(header).toBeInTheDocument; 21 | const content = getByText('latex'); 22 | expect(content).toBeInTheDocument; 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /client/src/__tests__/TextAreaItem.test.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from '../lib/utils/test-util'; 3 | import TextAreaItem from '../components/Ingredients/TextAreaItem/index'; 4 | import '@testing-library/jest-dom'; 5 | 6 | describe('', () => { 7 | it('renders TextAreaItem', () => { 8 | const { container } = render(); 9 | expect(container).toMatchSnapshot(); 10 | }); 11 | it('in TextAreaItem', () => { 12 | const { container } = render(); 13 | expect(container.querySelector('textarea')).toBeInTheDocument; 14 | expect(container.querySelector('textarea')).toHaveStyle({ 15 | height: '100%', 16 | }); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /client/src/__tests__/__snapshots__/QrCode.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` renders QrCode 1`] = ` 4 |
5 |
8 | 13 |
14 |
15 | `; 16 | -------------------------------------------------------------------------------- /client/src/__tests__/__snapshots__/TableItem.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` renders TableItem 1`] = ` 4 |
5 | 8 | 11 | 14 | 19 | 24 | 25 | 26 | 29 | 32 | 41 | 63 | 64 | 65 |
17 | title 18 | 22 | latex 23 |
35 |
38 | 나의 latex 39 |
40 |
44 |
47 | 50 | 1+1 51 | 52 |
55 |
58 | X 59 |
60 |
61 |
62 |
66 |
67 | `; 68 | -------------------------------------------------------------------------------- /client/src/__tests__/__snapshots__/TextAreaItem.test.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` renders TextAreaItem 1`] = ` 4 |
5 |
8 |