October 21, 2018 by Artur

Today I am writing about faking data again using ts-api-faker . Usually we pass this kind of data to faker

[ { "name" : "name.firstName" , "surname" : "name.lastName" , "mail" : "internet.email" , "profilePhoto" : "internet.avatar" , "animalPhoto" : "image.cat" } , { "name" : "name.firstName" , "surname" : "name.lastName" , "mail" : "internet.email" , "profilePhoto" : "internet.avatar" , "animalPhoto" : "image.dog" } ]

and then we receive faked data

It works perfect but… Usually a schema looks like this.

[ { "name" : "String" , "surname" : "String" , "mail" : "String" , "profilePhoto" : "String" , "animalPhoto" : "String" } ]

The answer from faker is inappropriate then

[ { "name" : "atque" , "surname" : "eos" , "mail" : "voluptas" , "profilePhoto" : "similique" , "animalPhoto" : "earum" } ]

What if you use levensthein algorithm on keys of values and transform values to the closest to key name option?

Again we pass

[ { "name" : "String" , "surname" : "String" , "mail" : "String" , "profilePhoto" : "String" , "animalPhoto" : "String" } ]

Voila, we get the correct faker structure.

I’ve just added this feature to my repo ts-api-faker

Feel free to contribute and extend this library functionality. If you support me and this idea please star this repo to help me get more contributors and extend ts-api-faker library.

In future we can add machine learning to this and get ultimate intelligent faker for our apis and databases :)