Add examples

This commit is contained in:
Steve Kinney
2024-09-24 15:56:02 -06:00
parent 410a6c72ff
commit 61485cc73c
8 changed files with 150 additions and 24 deletions

View File

@@ -0,0 +1,24 @@
{
"name": "yearbook",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"test": "vitest"
},
"repository": {
"type": "git",
"url": "git+https://github.com/stevekinney/testing-javascript.git"
},
"author": "Steve Kinney <hello@stevekinney.net>",
"license": "MIT",
"bugs": {
"url": "https://github.com/stevekinney/testing-javascript/issues"
},
"homepage": "https://github.com/stevekinney/testing-javascript#readme",
"devDependencies": {
"@vitest/ui": "^2.1.1",
"vite": "^5.4.5",
"vitest": "^2.1.1"
}
}

View File

@@ -0,0 +1,31 @@
export class Person {
/**
* A person in the yearbook.
* @param {string} firstName
* @param {string} lastName
* @param {string} dateOfBirth
*/
constructor(firstName, lastName, dateOfBirth) {
this.firstName = firstName;
this.lastName = lastName;
this.dateOfBirth = dateOfBirth;
}
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
get age() {
const today = new Date();
const birthDate = new Date(this.dateOfBirth);
let age = today.getFullYear() - birthDate.getFullYear();
const month = today.getMonth() - birthDate.getMonth();
if (month < 0 || (month === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
}

View File

@@ -0,0 +1,9 @@
import { describe, expect, it } from 'vitest';
import { Person } from './person';
describe('Person', () => {
it('should be an instance of a Person', () => {
const person = new Person('John', 'Doe', '2000-01-01');
expect(person).toBeInstanceOf(Person);
});
});