Skip to content

Instantly share code, notes, and snippets.

View FagnerMartinsBrack's full-sized avatar
🎯
Focusing

Fagner Brack FagnerMartinsBrack

🎯
Focusing
View GitHub Profile
@FagnerMartinsBrack
FagnerMartinsBrack / EndUsage.js
Last active February 11, 2021 02:08
(Medium) Why Small Modules Matter - End Usage
const flattenArrayInsideFile = require("./flatten-array-inside-file");
flattenArrayInsideFile("file.txt")
.then(function() {
// Do something after
})
.catch(function(error) {
// Handle error
});
@FagnerMartinsBrack
FagnerMartinsBrack / EndResult.js
Last active February 11, 2021 02:08
(Medium) Why Small Modules Matter - End Result
const readFileAsJSON = require("./read-file");
const writeFileToJSON = require("./write-file");
const flattenArray = require("flatten-array");
module.exports = function flattenArrayInsideFile(fileName) {
return readFileAsJSON(fileName)
.then(function(parsedContent) {
const flattenedArray = flattenArray(parsedContent);
return writeFileToJSON(fileName, flattenedArray);
})
@FagnerMartinsBrack
FagnerMartinsBrack / ClientCodeForEvolvableAPI.js
Last active April 14, 2019 04:09
(Medium) - Evolvable APIs
// The brains to fill the fields. This can use AI, etc.
const fillFields = (fields) => fields;
const run = async (method = 'GET', url = 'https://clinic.example.com/start-booking', fields) => {
const response = await fetch(url, { method: method, body: JSON.stringify(fields) });
const parsedResponseBody = await response.json();
const requiredFieldsAction = queryAction('required-fields', parsedResponseBody);
if (requiredFieldsAction) {
@FagnerMartinsBrack
FagnerMartinsBrack / MoveRangesIntoArray.diff
Created November 22, 2018 10:43
(Medium) - How TDD Can Prevent Over-Engineering
const greaterThan5000 = { endOfRange: Money('$5000.00'), interestPerDollar: Money('$0.14'), previousInterestPerDollar: Money('$0.09') };
const greaterThan10000 = { endOfRange: Money('$10000.00'), interestPerDollar: Money('$0.21'), previousInterestPerDollar: Money('$0.14') };
+ // You can move this into a configuration file so that changes
+ // in the behavior doesn't require code changes
+ const ranges = [greaterThan2000, greaterThan5000, greaterThan10000];
+
let interestAmount = Money('$0.00');
- if (loanAmount.greaterThan(Money('$2000.00'))) {
@FagnerMartinsBrack
FagnerMartinsBrack / EvolvableAPIForAppointmentSystem.json
Last active February 13, 2019 22:03
(Medium) - Evolvable APIs
// Response for:
// GET /start-booking
{
"data": [{
"type": "action",
"id": "required-fields",
"attributes": {
"url": "/start-booking",
"method": "post",
@FagnerMartinsBrack
FagnerMartinsBrack / CodeForEvolvableAPIUsingCLI.js
Last active February 5, 2019 10:34
(Medium) - Evolvable APIs
// The brains to fill the fields. This uses the human brain of the user.
const usingCLI = (fields) => {
const fieldsWithValuesFromUser = await presentFieldNamesToUser(Object.keys(fields));
return fieldsWithValuesFromUser;
};
// The client uses the CLI to get the field values when the server asks for it
const runWithFieldsFromCLI = run(usingCLI);
// Initial trigger of the booking process
@FagnerMartinsBrack
FagnerMartinsBrack / SecondRequirementTraditionalWay.js
Last active February 3, 2019 03:01
(Medium) - Evolvable APIs
const response = await fetch('http://clinic.example.com/booking?intendedDoctor=jane', {
method: 'get'
});
const availableTimeSlotsForTheWeek = await response.json();
await fetch('http://clinic.example.com/booking', {
method: 'post',
body: JSON.stringify({
username: 'mary.doe',
@FagnerMartinsBrack
FagnerMartinsBrack / CreateBookingTraditionalWay.js
Last active February 3, 2019 02:57
(Medium) - Evolvable APIs
await fetch('http://clinic.example.com/booking', {
method: 'post',
body: JSON.stringify({
username: 'mary.doe',
dateTime: '2018-05-01T10:20:00Z'
intendedDoctor: 'jane',
booking: 'Consultation with Doctor Jane'
}),
});
@FagnerMartinsBrack
FagnerMartinsBrack / ExampleImportCoupling.js
Created December 17, 2018 10:44
(Medium) - The Myth Of 100% Code Coverage
const prefill = Prefill(StubbedProvider())(MappingLogic(forSimpleMatching));
const prefilledFormFields = prefill(FormFields());
expect(prefilledFormFields.toString()).toEqual('name: Anna');
@FagnerMartinsBrack
FagnerMartinsBrack / ExampleIsolateSideEffects.js
Created December 17, 2018 10:43
(Medium) - The Myth Of 100% Code Coverage
const httpServerDataSource = HttpServerDataSource(getRequest);
const postsTitle = await httpServerDataSource.findPostsTitle();
assert.deepEqual(postsTitle, ['How to bake a cake']);