Skip to content

Commit

Permalink
Merge pull request #2 from devjoi2018/tetsing-code
Browse files Browse the repository at this point in the history
Documentacion y algunas mejoras
  • Loading branch information
devjoi2018 authored Nov 13, 2022
2 parents 33cdc3e + 48e51e2 commit de48a36
Show file tree
Hide file tree
Showing 8 changed files with 740 additions and 915 deletions.
84 changes: 82 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,82 @@
A sample command-line application with an entrypoint in `bin/`, library code
in `lib/`, and example unit test in `test/`.
<center><h1><b>Dart JSON Generator</b></h1></center>
<center>Versión v1.1.1</center>
<br></br>

Dart JSON Generator es una herramienta que permite generar archivos JSON a partir de **mapas** como modelos de datos en el lenguaje Dart en su version **v2.18.2** o superior.
<br></br>

# **¿Como funciona?**

Primero debes instalar el SDK de Dart en tu equipo Mac, Linux o Windows. Puedes descargarlo desde [aquí](https://dart.dev/get-dart).

Nota: Si eres desarrollador Flutter, Dart ya viene instalado en tu equipo.

Luego de instalar Dart, en la terminal de tu IDE de preferencia, debes ejecutar el siguiente comando:

> dart run

## Crear modelos de datos

Para crear un modelo de datos debes hacerlo dentro del archivo principal ```bin/generador_de_json.dart```, puedes llamar al metodo ```generateJson.generateJson()``` y en su parametro **jsonMap** debes pasarle un **mapa** con los datos que deseas convertir a JSON como en el siguiente ejemplo:

```dart
generateJson.generateJson(
jsonName: 'example',
jsonMap: <String, dynamic>{
¨id¨: 1,
¨name¨: ¨John Doe¨,
¨age¨: 25,
¨isDeveloper¨: true,
}
);
```
El parametro **jsonName** es el nombre del archivo JSON que se generará, en este caso el archivo se llamará **example.json** y se almacenara en la carpeta ```lib/example.json```.

Para generar un archivo JSON con un **array** de objetos debes hacerlo de la siguiente manera:

```dart
generateJson.generateJsonList(
jsonName: 'test_data',
jsonMap: (data) {
return List.generate(
100, // Cantidad de objetos que se generaran
(index) => <String, dynamic>{
'id': index,
'name': util.generateRandomFemaleOrMaleName(),
'lastName': util.generateRandomLastName(),
'email': util.generateRandomEmail(),
'avatar': util.generateRandomAvatarUrl(),
'phone': util.generateRandomPhoneNumber(),
'isShared': util.generateRandomBool(),
},
);
},
);
```

En este ejemplo se generará un archivo JSON con 100 objetos con los datos de una persona, también en el ejemplo se esta haciendo uso de la instancia **util** que es una clase que contiene metodos preestablecidos que generan datos aleatorios como nombres, apellidos, correos, etc.

Si quieres generar tus propios metodos preestablecidos puedes hacerlo editando el archivo ```lib/utils/all_utils.dart```.

Algunos de los metodos preestablecidos de los que puedes hacer uso son:

- ```generateRandomBool()```
- Genera un valor booleano aleatorio.
- ```generateRandomMaleName()```
- Genera un nombre masculino sin apellido aleatorio, pero si el parametro **isFullName** es **true** genera un nombre completo.
- ```generateRandomFemaleName()```
- Genera un nombre femenino sin apellido aleatorio, pero si el parametro **isFullName** es **true** genera un nombre completo.
- ```generateRandomFemaleOrMaleName()```
- Genera un nombre aleatorio masculino o femenino sin apellido, pero si el parametro **isFullName** es **true** genera un nombre completo.
- ```generateRandomEmail()```
- Genera un correo electronico aleatorio.
- ```generateRandomAvatarUrl()```
- Genera una url de una imagen aleatoria masculino o femenino.
- ```generateRandomMaleAvatarUrl()```
- Genera una url de una imagen masculina aleatoria.
- ```generateRandomFemaleAvatarUrl()```
- Genera una url de una imagen femenina aleatoria.
- ```generateRandomPhoneNumber()```
- Genera un numero de telefono aleatorio.
- ```generateRandomLastName()```
- Genera un apellido aleatorio.
24 changes: 18 additions & 6 deletions bin/generador_de_json.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,31 @@ void main(List<String> arguments) {
final AllUtils util = AllUtils();
// Instancia la clase que genera los json
final GenerateJson generateJson = GenerateJson();

/// Ejemplo de como generar un json con un solo dato
generateJson.generateJson(
jsonName: 'example',
jsonMap: (Map<String, dynamic> data) {
return <String, dynamic>{
'id': 1,
'name': util.generateRandomFemaleOrMaleName(isFullName: true),
'email': util.generateRandomEmail(),
'avatar': util.generateRandomAvatarUrl(),
};
},
);

/// Ejemplo de como generar un json con una lista de datos
generateJson.generateJsonList(
jsonName: 'test_data',
jsonMap: (data) {
jsonName: 'example_list',
jsonMap: (List<Map<String, dynamic>> data) {
return List.generate(
100,
(index) => <String, dynamic>{
'id': index,
'name': util.generateRandomFemaleOrMaleName(),
'lastName': util.generateRandomLastName(),
'name': util.generateRandomFemaleOrMaleName(isFullName: true),
'email': util.generateRandomEmail(),
'avatar': util.generateRandomAvatarUrl(),
'phone': util.generateRandomPhoneNumber(),
'isShared': util.generateRandomBool(),
},
);
},
Expand Down
6 changes: 6 additions & 0 deletions lib/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"id": 1,
"name": "Steven Collins",
"email": "ana12@herman.info",
"avatar": "https://randomuser.me/api/portraits/men/8.jpg"
}
Loading

0 comments on commit de48a36

Please sign in to comment.