Aparência
Schemas e Banco de Dados Simulado
Vamos abordar como configurar schemas, manipular dados em um banco de dados simulado e, por fim, inicializar dados usando uma factory.
Configurando Schemas no Mirage JS
No Mirage JS, schemas são usados para definir modelos e relações. Isso é similar ao que você faria em um ORM tradicional. Vamos criar um exemplo simples onde definimos dois modelos: User
e Post
.
typescript
import { Server, Model } from "miragejs";
const server = new Server({
models: {
user: Model,
post: Model.extend({
user: belongsTo(),
}),
},
seeds(server: Server) {
server.create("user", { name: "Tony" });
server.create("post", { title: "New in Mirage JS", userId: 1 });
},
});
Neste código, definimos dois modelos e uma relação de belongsTo
entre post
e user
. O método seeds
é usado para inserir dados iniciais no banco de dados simulado.
Manipulando Dados no Banco de Dados Simulado
Você pode manipular dados no banco de dados do Mirage JS usando as APIs de intercepção de requisições HTTP. Abaixo, vamos adicionar handlers para as operações CRUD para o modelo User
.
typescript
server = createServer({
models: {
user: Model,
},
routes() {
this.namespace = "api";
this.get("/users", (schema) => {
return schema.users.all();
});
this.post("/users", (schema, request) => {
let attrs = JSON.parse(request.requestBody);
return schema.users.create(attrs);
});
this.patch("/users/:id", (schema, request) => {
let newAttrs = JSON.parse(request.requestBody);
let id = request.params.id;
let user = schema.users.find(id);
return user.update(newAttrs);
});
this.delete("/users/:id", (schema, request) => {
let id = request.params.id;
return schema.users.find(id).destroy();
});
},
});
Exemplo Prático: Inicializando Dados com Factory
Factories no Mirage JS são uma maneira poderosa de gerar dados de teste. Aqui está como você pode definir uma factory para o modelo User
:
typescript
import { Server, Factory, Model } from "miragejs";
server = new Server({
models: {
user: Model,
},
factories: {
user: Factory.extend({
name(i) {
return `User ${i}`;
},
}),
},
seeds(server) {
server.createList("user", 10); // Cria 10 usuários
},
});
Neste exemplo, a factory user
gera usuários com nomes únicos. O método createList
é usado para gerar 10 usuários usando a factory.
Estes exemplos deveriam te dar uma boa base para começar a trabalhar com Mirage JS em seus projetos TypeScript, permitindo-lhe simular APIs de forma eficaz e controlar o ambiente de dados de sua aplicação durante o desenvolvimento ou testes.