diff --git a/dom-merge-conflict/tasks/buttons-and-counter/src/app.js b/dom-merge-conflict/tasks/buttons-and-counter/src/app.js index af608eb..6413c11 100644 --- a/dom-merge-conflict/tasks/buttons-and-counter/src/app.js +++ b/dom-merge-conflict/tasks/buttons-and-counter/src/app.js @@ -1,31 +1,35 @@ +import { Header } from "./header.js"; +import { Main } from "./main.js"; + //increments the number in a node's text function increment(node) { let current = node.textContent; node.textContent = Number(current) + 1; } +function decrement(node) { + let current = node.textContent; + node.textContent = Number(current) - 1; +} export function App() { const body = document.createElement("body"); - const header = document.createElement("header"); - header.innerHTML = ` -
A simple counter. Press increment to increase the count by one.
- `; + const header = Header(); + const main = Main(); body.appendChild(header); - - const main = document.createElement("main"); - main.innerHTML = ` -0
- - `; body.appendChild(main); - const button = body.querySelector("#increment"); + const buttonIncrement = body.querySelector("#increment"); + const buttonDecrement = body.querySelector("#decrement"); const counter = body.querySelector("#counter"); - button.addEventListener("click", () => { + + buttonIncrement.addEventListener("click", () => { increment(counter); }); + buttonDecrement.addEventListener("click", () => { + decrement(counter); + }); + return body; } diff --git a/dom-merge-conflict/tasks/buttons-and-counter/src/header.js b/dom-merge-conflict/tasks/buttons-and-counter/src/header.js new file mode 100644 index 0000000..807a77b --- /dev/null +++ b/dom-merge-conflict/tasks/buttons-and-counter/src/header.js @@ -0,0 +1,8 @@ +export function Header() { + const header = document.createElement("header"); + header.innerHTML = ` +A simple counter. Press increment to increase the count or decrement to decrease the count.
+ `; + return header; +} diff --git a/dom-merge-conflict/tasks/buttons-and-counter/src/main.js b/dom-merge-conflict/tasks/buttons-and-counter/src/main.js new file mode 100644 index 0000000..7b1a6fe --- /dev/null +++ b/dom-merge-conflict/tasks/buttons-and-counter/src/main.js @@ -0,0 +1,9 @@ +export function Main() { + const main = document.createElement("main"); + main.innerHTML = ` +0
+ + + `; + return main; +} diff --git a/dom-merge-conflict/tasks/buttons-and-counter/test/app.test.js b/dom-merge-conflict/tasks/buttons-and-counter/test/app.test.js index 1139e45..451f7cd 100644 --- a/dom-merge-conflict/tasks/buttons-and-counter/test/app.test.js +++ b/dom-merge-conflict/tasks/buttons-and-counter/test/app.test.js @@ -17,7 +17,7 @@ describe("button and counter", () => { test("contains description paragraph with mention of 'increment' in header", () => { expect( - container.querySelector("header").querySelector("p") + container.querySelector("header").querySelector("p"), ).toHaveTextContent(/increment/i); }); @@ -35,7 +35,7 @@ describe("button and counter", () => { expect(getByTestId(container, "counter")).toHaveTextContent(/^2$/); }); - describe.skip("decrement button", () => { + describe("decrement button", () => { test("pressing Decrement decreases the counter", () => { const button = getByRole(container, "button", { name: "Decrement", @@ -49,7 +49,7 @@ describe("button and counter", () => { test("contains description paragraph with mention of 'decrement' in header", () => { expect( - container.querySelector("header").querySelector("p") + container.querySelector("header").querySelector("p"), ).toHaveTextContent(/decrement/i); }); }); diff --git a/dom-merge-conflict/tasks/conditional-rendering/src/profilePreview.js b/dom-merge-conflict/tasks/conditional-rendering/src/profilePreview.js index b1778b4..0732d7c 100644 --- a/dom-merge-conflict/tasks/conditional-rendering/src/profilePreview.js +++ b/dom-merge-conflict/tasks/conditional-rendering/src/profilePreview.js @@ -1,6 +1,17 @@ -export function ProfilePreview(profile) { +export function ProfilePreview(profile, options = {}) { const preview = document.createElement("aside"); + const { available = true, shortForm = false } = options; + + if (!available) { + const message = document.createElement("p"); + message.textContent = "Profile preview unavailable"; + + preview.appendChild(message); + + return preview; + } + const picture = document.createElement("img"); picture.src = profile.pictureSrc; picture.alt = ""; @@ -10,13 +21,16 @@ export function ProfilePreview(profile) { name.textContent = profile.name; name.dataset.testid = "profileName"; - const bio = document.createElement("p"); - bio.textContent = profile.bio; - bio.dataset.testid = "profileBio"; - preview.appendChild(picture); preview.appendChild(name); - preview.appendChild(bio); + + if (!shortForm) { + const bio = document.createElement("p"); + bio.textContent = profile.bio; + bio.dataset.testid = "profileBio"; + + preview.appendChild(bio); + } return preview; } diff --git a/dom-merge-conflict/tasks/conditional-rendering/test/profilePreview.test.js b/dom-merge-conflict/tasks/conditional-rendering/test/profilePreview.test.js index 8e50cec..b8bbe5d 100644 --- a/dom-merge-conflict/tasks/conditional-rendering/test/profilePreview.test.js +++ b/dom-merge-conflict/tasks/conditional-rendering/test/profilePreview.test.js @@ -31,7 +31,7 @@ describe("profile preview", () => { }); }); - describe.skip("available option", () => { + describe("available option", () => { test("only notice that preview is unavailable is displayed with shortform on, available off", () => { const profile = { pictureSrc: "/null", @@ -47,7 +47,7 @@ describe("profile preview", () => { expect(container.childElementCount).toBe(1); expect(container.children[0]).toHaveTextContent( - "Profile preview unavailable" + "Profile preview unavailable", ); }); @@ -66,12 +66,12 @@ describe("profile preview", () => { expect(container.childElementCount).toBe(1); expect(container.children[0]).toHaveTextContent( - "Profile preview unavailable" + "Profile preview unavailable", ); }); }); - describe.skip("short form option", () => { + describe("short form option", () => { test("contains profile info except the bio with shortform on", () => { const profile = { pictureSrc: "/picture",