Artículo
· 6 mar, 2020 Lectura de 3 min

El cosFaker

¡Hola Comunidad!

Esta publicación es para presentarles uno de los primeros proyectos en COS de @Henry Pereira . Lo creó cuando empezó a aprender el lenguaje y lo sigue mejorando hasta hoy.

El CosFaker (aquí en Github) es una biblioteca de COS pura, para generar datos falsos.

cosFaker vs Utils de populación

¿Por qué usar cosFaker si Caché tiene la utilidad de popular datos?

La utilidad de populado tiene algunas características excelentes, como por ejemplo el generador de SSN, ¿pero qué hacer cuando tenemos un campo con una descripción larga de un producto? ¿Cómo comprobamos si esa tabla listará los correos electrónicos o si al realizar un cálculo correcto contará los días desde la última interacción de un usuario?

Para mí, cosFaker es un Populate en esteroides! Se puede usar junto con Populate para generar %Stream o cadenas largas, o fechas al aleatorias.

Por ejemplo:

Class Sample.Product Extends (%Persistent, %Populate, %XML.Adaptor)
{

  Property Type As %String;
  Property Notes As %String(MAXLEN = 250, MINLEN = 10);
  Property Name As %String;
  Property Origin As %String;
  Property LastInteraction As %TimeStamp;

  Method OnPopulate() As %Status [ ServerOnly = 1 ]
  {
   Set tSC = $$$OK
   Try {
      Set ..Type = "Coffee"
      Set ..Name = ##class(cosFaker.Coffee).BlendName()
      Set ..LastInteraction = ##class(cosFaker.Dates).Backward($Random(80))
      Set ..Notes = ##class(cosFaker.Coffee).Notes()
      Set ..Origin = ##class(cosFaker.Coffee).Origin()
   Catch tException {
      Set:$$$ISOK(tSC) tSC = tException.AsStatus()
   }
   Quit tSC
  }
}
 Do ##class(Sample.Product).Populate(10)

Y es excelente para escribir pruebas unitarias:

Method TestPersonLogin() As SampleProject.DataModel.Person
{
   Set person = ##class(Sample.DataModel.Person).%New()
   Set person.FirstName = ##class(cosFaker.Name).FirstName()
   Set person.LastName = ##class(cosFaker.Name).LastName()
   Set person.Email = ##class(cosFaker.Internet).Email(person.FirstName, person.LastName)
   Do $$$AssertStatusOK(person.%Save())

   Set matcher=##class(%Regex.Matcher).%New("\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z")
   Set matcher.Text = person.Email
   Do $$$AssertTrue(matcher.Locate())
   Do $$$AssertEquals(person, ##class(Sample.DataModel.Person).%OpenId(person.%Id()))
}

¡cosFaker es divertido!!

 

Sí, cosFaker es divertido... En lugar de nombres como "Gibbs, Zoe K.", tendrá a "Goku" o "Piccolo" usando ##class(cosFaker.DragonBall).Character()

Y muchas cosas divertidas, como Pokemon Name Generator, Star Wars Planets or Droids, Coffee, UFC Fighters Names, Lorem Ipsum, etc...

Podéis comprobar en GitHub todos los tipos de datos que es capaz de generar.

Así que... ¡Esto es todo, amigos! smiley

Gracias

Comentarios (1)0
Inicie sesión o regístrese para continuar