Prerequisite

Kahraman ve kötü adam bileşen grupları boyunca kullanılacak olan yeni arayüzler ve türler oluşturun.

// src/models/Boy.ts
export interface Boy {
  id: string;
  name: string;
  description: string;
}

/* istanbul ignore file */
// src/models/types.ts
import { Hero } from "./Hero";
import { Villain } from "./Villain";
import { Boy } from "./Boy";

export type HeroProperty = Hero["name"] | Hero["description"] | Hero["id"];
export type VillainProperty =
  | Villain["name"]
  | Villain["description"]
  | Villain["id"];

export type BoyProperty = Boy["name"] | Boy["description"] | Boy["id"];
export type EntityRoute = "heroes" | "villains" | "boys";
export type EntityType = "hero" | "villain" | "boy";

/** Returns the corresponding route for the entity;
 *
 * `hero` -> `/heroes`, `villain` -> `/villains`, `boy` -> `/boys` */
export const entityRoute = (entityType: EntityType) =>
  entityType === "hero"
    ? "heroes"
    : entityType === "villain"
    ? "villains"
    : "boys";

/* istanbul ignore file */

api.ts'yi kendi klasörüne taşıyın

./src/hooks/api.ts adresinden ./src/api/api.ts adresine. IDE'niz bağımlılıkları otomatik olarak güncellemelidir.

Hook'ları güncelleyin

useDeleteEntity, Boy için güncellenir.

useGetEntities yalnızca yorumun güncellenmesi gereklidir

  • /heroes veya /villains yollarına GET için yardımcı

  • /heroes, /villains veya /boys yollarına GET için yardımcı.

usePostEntity Boy için güncellenir.

usePutEntity Boys için güncellenir.

E2E komutlarını değiştirin

./cypress/support altındaki 3 dosya arasında, alakalılık lehine içe aktarmaları bölmek mümkündür

  • commands.ts: tüm eklenti içe aktarmaları ve e2e & CT ile ortak komutlar (ör: cy.getByCY).

  • component.ts: bileşen testlerine özgü komutlar (ör: cy.mount, cy.wrappedMount).

  • e2e.ts: e2e'ye özgü komutlar (ör: cy.crud).

component.tsx ve e2e.ts, CT ve e2e dosyalarının ortak komutlara ve eklentilere erişimi olması için commands.ts'yi içe aktaracaktır.

Repo kökündeki tip tanımlarını güncelleyin.

Kahramanların boys aynasını oluşturun

./db.json'i güncelleyin

boys grubunu ekleyin.

Veritabanı durumunu doğru şekilde sıfırlayabilmemiz için bunu ./cypress/fixtures/db.json'a yansıtın.

./cypress/fixtures/boys.json eklentisini ekleyin.

Bileşenleri yansıtın

Kahramanlar grubunun olduğu gibi boys için 3 bileşen oluşturuyoruz. Ayrıca bazı temel bileşenleri güncellememiz gerekiyor.

ListHeader için yalnızca title için tip değişir.

Diğerleri aynalardır. ./src/boys/ altında bir klasör ve onun altında 3 ayna dosyası oluşturun.

Boys rotasını App.tsx'e ekleyin.

Boys'u NavBar bileşenine ekleyin.

E2E testlerinin aynasını oluşturun

Kahraman sürümlerinin boys aynaları olan 3 yeni e2e testi oluşturuyoruz.

Arka uç testi, kötü adamları kapsayacak yeni bir bloğa ihtiyaç duyar.

routes-nav, kötü adamlar rotasını kapsayacak yeni bir teste ihtiyaç duyar.

Cypress bileşen testlerini yansıtın

Öncelikle, Navbar ve App testlerini güncelleyin. Navbar.cy için, routes dizisine boys eklememiz yeterlidir.

App.cy için, boys rotasını engellememiz ve boys için bir kontrol eklememiz gerekmektedir.

boys altındaki 3 bileşen için 3 yeni bileşen testine ihtiyacımız var.

RTL testlerini yansıtın

Cy CT ile yapılanın aynısını RTL'ye uygulamamız yeterlidir.

App.test için bir msw işleyici ve yeni bir rota kontrolüne ihtiyaç duyar.

Navbar.test için routes değişkeninin aynı güncellemeye, yani Boys eklemeye ihtiyaç duyar.

Last updated