feat: Add new features and mock data for order and configuration testing

- Updated brojs-cli mock to include additional feature flags
- Modified Jest preset to exclude more files from coverage
- Updated snapshot tests for masters, order create, order view, and orders list pages
- Added new UI elements and interactions in various components
- Improved test coverage configuration
This commit is contained in:
RustamRu 2025-03-12 01:49:44 +03:00
parent a18a26fcaf
commit 909cbd0321
6 changed files with 514 additions and 183 deletions

View File

@ -3,7 +3,9 @@ import { jest } from '@jest/globals';
jest.mock('@brojs/cli', () => ({
getConfigValue: jest.fn(() => '/api'),
getFeatures: jest.fn(() => ({
['order-view-status-polling']: { value: '3000' }
['order-view-status-polling']: { value: '3000' },
['car-img-upload']: { value: 'true' },
['order-cost']: { value: '1000' },
})),
getNavigationValue: jest.fn((navKey: string) => {
switch (navKey) {

View File

@ -5,7 +5,7 @@ module.exports = {
},
coverageProvider: 'v8',
coverageDirectory: 'coverage',
collectCoverageFrom: ['**/src/**/*.{ts,tsx}', '!**/src/app.tsx'],
collectCoverageFrom: ['**/src/**/*.{ts,tsx}', '!**/src/app.tsx', '!**/src/**/types.ts', '!**/src/**/*.d.ts', '!**/src/models/**/*'],
collectCoverage: true,
clearMocks: true,
moduleNameMapper: {

View File

@ -3,46 +3,42 @@
exports[`Master Page should display master list and show details when master button is clicked 1`] = `
<div>
<div
class="css-1yeiifd"
class="css-s92abg"
>
<div
class="css-13owfwq"
<header
class="css-106dwq4"
>
<h2
class="chakra-heading css-173d1bl"
>
Сухой мастер
</h2>
<div
class="chakra-stack css-1cggwyz"
class="css-br9knx"
>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-18yoix2"
href="/order"
<h2
class="chakra-heading css-8w8uga"
>
Заказы
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-1kg18wp"
data-testid="master-button"
href="/master"
Сухой мастер
</h2>
<div
class="chakra-stack css-1rafi8n"
>
Мастера
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-19byqlw"
href="/order"
>
Заказы
</a>
<hr
aria-orientation="vertical"
class="chakra-divider css-zw0v9u"
/>
<a
class="chakra-button css-g11sl9"
data-testid="master-button"
href="/master"
>
Мастера
</a>
</div>
</div>
</div>
</header>
<div
class="css-jiwy8d"
>

View File

@ -90,65 +90,163 @@ exports[`Create Order page renders page structure 1`] = `
>
Цвет автомобиля
</label>
<input
class="chakra-input css-moii5c"
id="field-:r2:"
list=":r3:"
name="carColor"
value=""
/>
<datalist
id=":r3:"
<div
class="chakra-stack css-uv9e93"
>
<option
label="white"
value="#ffffff"
<div
class="css-ed0q6j"
>
white
</option>
<option
label="black"
value="#000000"
>
black
</option>
<option
label="silver"
value="#c0c0c0"
>
silver
</option>
<option
label="gray"
value="#808080"
>
gray
</option>
<option
label="beige-brown"
value="#796745"
>
beige-brown
</option>
<option
label="red"
value="#b90000"
>
red
</option>
<option
label="blue"
value="#003B62"
>
blue
</option>
<option
label="green"
value="#078d51"
>
green
</option>
</datalist>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-96lva5"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-c58w4d"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-ltoa43"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-vqo9x6"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-1lr2es4"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-1wfunc4"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-fg5oe6"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-11g98ql"
>
<div
class="css-1k9efnl"
>
<div
class="css-f0pfxe"
/>
</div>
</div>
</button>
<button
class="css-6su6fj"
type="button"
>
<div
class="css-bf4qsc"
>
<div
class="css-1k9efnl"
>
<div
class="css-r58uxc"
/>
<p
class="chakra-text css-1xa8ojw"
>
Другой
</p>
</div>
</div>
</button>
</div>
</div>
</div>
<div
class="chakra-form-control css-1kxonj9"
@ -157,7 +255,7 @@ exports[`Create Order page renders page structure 1`] = `
<label
class="chakra-form__label css-g6pte"
for="carBody"
id="field-:r4:-label"
id="field-:r3:-label"
>
Тип кузова автомобиля
<span
@ -169,13 +267,13 @@ exports[`Create Order page renders page structure 1`] = `
</span>
</label>
<div
class="css-8atqhb"
class="css-1kxonj9"
>
<input
aria-readonly="true"
aria-required="true"
class="chakra-input css-moii5c"
id="field-:r4:"
id="field-:r3:"
name="carBody"
placeholder="Не указан"
readonly=""
@ -184,19 +282,19 @@ exports[`Create Order page renders page structure 1`] = `
/>
<div
class="chakra-popover__popper css-iy22zq"
style="visibility: hidden; position: absolute; inset: 0 auto auto 0;"
style="visibility: hidden; position: fixed; inset: 0 auto auto 0;"
>
<section
aria-describedby="popover-body-:r8:"
aria-describedby="popover-body-:r7:"
class="chakra-popover__content css-1mvj5hv"
id="popover-content-:r8:"
id="popover-content-:r7:"
role="dialog"
style="transform-origin: var(--popper-transform-origin); opacity: 0; visibility: hidden; transform: scale(0.95) translateZ(0);"
tabindex="-1"
>
<div
class="chakra-popover__body css-1uqsyei"
id="popover-body-:r8:"
id="popover-body-:r7:"
>
<div
class="css-124gwxm"
@ -211,8 +309,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:r9:"
name="radio-:r5:"
id="radio-:r8:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -243,8 +341,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:ra:"
name="radio-:r5:"
id="radio-:r9:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -275,8 +373,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rb:"
name="radio-:r5:"
id="radio-:ra:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -307,8 +405,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rc:"
name="radio-:r5:"
id="radio-:rb:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -339,8 +437,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rd:"
name="radio-:r5:"
id="radio-:rc:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -371,8 +469,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:re:"
name="radio-:r5:"
id="radio-:rd:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -403,8 +501,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rf:"
name="radio-:r5:"
id="radio-:re:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -435,8 +533,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rg:"
name="radio-:r5:"
id="radio-:rf:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -467,8 +565,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rh:"
name="radio-:r5:"
id="radio-:rg:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -499,8 +597,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:ri:"
name="radio-:r5:"
id="radio-:rh:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -531,8 +629,8 @@ exports[`Create Order page renders page structure 1`] = `
<input
aria-required="true"
hidden=""
id="radio-:rj:"
name="radio-:r5:"
id="radio-:ri:"
name="radio-:r4:"
required=""
style="border: 0px; clip: rect(0px, 0px, 0px, 0px); height: 1px; width: 1px; margin: -1px; padding: 0px; overflow: hidden; white-space: nowrap; position: absolute;"
type="radio"
@ -566,8 +664,8 @@ exports[`Create Order page renders page structure 1`] = `
>
<label
class="chakra-form__label css-g6pte"
for="field-:rk:"
id="field-:rk:-label"
for="field-:rj:"
id="field-:rj:-label"
>
В какое время автомобиль доступен?
<span
@ -590,7 +688,7 @@ exports[`Create Order page renders page structure 1`] = `
>
<input
class="chakra-input css-moii5c"
id="field-:rl:"
id="field-:rk:"
max=""
name="availableDatetimeBegin"
type="datetime-local"
@ -607,7 +705,7 @@ exports[`Create Order page renders page structure 1`] = `
>
<input
class="chakra-input css-moii5c"
id="field-:rm:"
id="field-:rl:"
min=""
name="availableDatetimeEnd"
type="datetime-local"
@ -624,7 +722,7 @@ exports[`Create Order page renders page structure 1`] = `
<label
class="chakra-form__label css-g6pte"
for="carLocation"
id="field-:rn:-label"
id="field-:rm:-label"
>
Где находится автомобиль?
<span
@ -638,7 +736,7 @@ exports[`Create Order page renders page structure 1`] = `
<div />
<div
class="chakra-form__helper-text css-186pyma"
id="field-:rn:-helptext"
id="field-:rm:-helptext"
>
Например, 55.754364, 48.743295 Университетская улица, 1, Иннополис, Верхнеуслонский район, Республика Татарстан (Татарстан), 420500
</div>

File diff suppressed because one or more lines are too long

View File

@ -3,46 +3,42 @@
exports[`Страница заказов должна корректно отображать список заказов после загрузки данных 1`] = `
<div>
<div
class="css-1yeiifd"
class="css-s92abg"
>
<div
class="css-13owfwq"
<header
class="css-106dwq4"
>
<h2
class="chakra-heading css-173d1bl"
>
Сухой мастер
</h2>
<div
class="chakra-stack css-1cggwyz"
class="css-br9knx"
>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-1kg18wp"
href="/auth/login"
<h2
class="chakra-heading css-8w8uga"
>
Заказы
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-1kg18wp"
data-testid="master-button"
href="/auth/login"
Сухой мастер
</h2>
<div
class="chakra-stack css-1rafi8n"
>
Мастера
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-g11sl9"
href="/auth/login"
>
Заказы
</a>
<hr
aria-orientation="vertical"
class="chakra-divider css-zw0v9u"
/>
<a
class="chakra-button css-g11sl9"
data-testid="master-button"
href="/auth/login"
>
Мастера
</a>
</div>
</div>
</div>
</header>
<div
class="css-jiwy8d"
>
@ -75,7 +71,7 @@ exports[`Страница заказов должна корректно ото
<p
class="chakra-text css-52ukzg"
>
23.02.2025
12.03.2025
</p>
<button
class="chakra-button css-ez23ye"
@ -177,12 +173,7 @@ exports[`Страница заказов должна корректно ото
Выполняется
</option>
<option
value="working"
>
В работе
</option>
<option
value="canceled"
value="cancelled"
>
Отменено
</option>
@ -273,7 +264,80 @@ exports[`Страница заказов должна корректно ото
<td
class="css-zgoslk"
>
Казань, ул. Баумана, 1
<button
aria-controls="popover-content-:r1:"
aria-expanded="false"
aria-haspopup="dialog"
class="chakra-button css-ez23ye"
id="popover-trigger-:r1:"
type="button"
>
<svg
class="chakra-icon css-onkibi"
focusable="false"
viewBox="0 0 24 24"
>
<g
fill="currentColor"
>
<path
d="M23.432,10.524C20.787,7.614,16.4,4.538,12,4.6,7.6,4.537,3.213,7.615.568,10.524a2.211,2.211,0,0,0,0,2.948C3.182,16.351,7.507,19.4,11.839,19.4h.308c4.347,0,8.671-3.049,11.288-5.929A2.21,2.21,0,0,0,23.432,10.524ZM7.4,12A4.6,4.6,0,1,1,12,16.6,4.6,4.6,0,0,1,7.4,12Z"
/>
<circle
cx="12"
cy="12"
r="2"
/>
</g>
</svg>
</button>
<div
class="chakra-popover__popper css-iy22zq"
style="visibility: hidden; position: absolute; min-width: max-content; inset: 0 auto auto 0;"
>
<section
aria-describedby="popover-body-:r1:"
class="chakra-popover__content css-sjj62m"
id="popover-content-:r1:"
role="dialog"
style="transform-origin: var(--popper-transform-origin); opacity: 0; visibility: hidden; transform: scale(0.95) translateZ(0);"
tabindex="-1"
>
<div
class="chakra-popover__arrow-positioner css-0"
data-popper-arrow=""
style="position: absolute;"
>
<div
class="chakra-popover__arrow css-0"
data-popper-arrow-inner=""
/>
</div>
<button
aria-label="Close"
class="chakra-popover__close-btn css-1o8qips"
type="button"
>
<svg
aria-hidden="true"
class="chakra-icon css-onkibi"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"
fill="currentColor"
/>
</svg>
</button>
<div
class="chakra-popover__body css-45vz3u"
id="popover-body-:r1:"
>
Казань, ул. Баумана, 1
</div>
</section>
</div>
</td>
</tr>
<tr
@ -316,12 +380,7 @@ exports[`Страница заказов должна корректно ото
Выполняется
</option>
<option
value="working"
>
В работе
</option>
<option
value="canceled"
value="cancelled"
>
Отменено
</option>
@ -412,7 +471,80 @@ exports[`Страница заказов должна корректно ото
<td
class="css-zgoslk"
>
Казань, ул. Баумана, 43
<button
aria-controls="popover-content-:r3:"
aria-expanded="false"
aria-haspopup="dialog"
class="chakra-button css-ez23ye"
id="popover-trigger-:r3:"
type="button"
>
<svg
class="chakra-icon css-onkibi"
focusable="false"
viewBox="0 0 24 24"
>
<g
fill="currentColor"
>
<path
d="M23.432,10.524C20.787,7.614,16.4,4.538,12,4.6,7.6,4.537,3.213,7.615.568,10.524a2.211,2.211,0,0,0,0,2.948C3.182,16.351,7.507,19.4,11.839,19.4h.308c4.347,0,8.671-3.049,11.288-5.929A2.21,2.21,0,0,0,23.432,10.524ZM7.4,12A4.6,4.6,0,1,1,12,16.6,4.6,4.6,0,0,1,7.4,12Z"
/>
<circle
cx="12"
cy="12"
r="2"
/>
</g>
</svg>
</button>
<div
class="chakra-popover__popper css-iy22zq"
style="visibility: hidden; position: absolute; min-width: max-content; inset: 0 auto auto 0;"
>
<section
aria-describedby="popover-body-:r3:"
class="chakra-popover__content css-sjj62m"
id="popover-content-:r3:"
role="dialog"
style="transform-origin: var(--popper-transform-origin); opacity: 0; visibility: hidden; transform: scale(0.95) translateZ(0);"
tabindex="-1"
>
<div
class="chakra-popover__arrow-positioner css-0"
data-popper-arrow=""
style="position: absolute;"
>
<div
class="chakra-popover__arrow css-0"
data-popper-arrow-inner=""
/>
</div>
<button
aria-label="Close"
class="chakra-popover__close-btn css-1o8qips"
type="button"
>
<svg
aria-hidden="true"
class="chakra-icon css-onkibi"
focusable="false"
viewBox="0 0 24 24"
>
<path
d="M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"
fill="currentColor"
/>
</svg>
</button>
<div
class="chakra-popover__body css-45vz3u"
id="popover-body-:r3:"
>
Казань, ул. Баумана, 43
</div>
</section>
</div>
</td>
</tr>
</tbody>