diff --git a/src/components/Loader/Loader.test.tsx b/src/components/Loader/Loader.test.tsx
new file mode 100644
index 0000000..e5790af
--- /dev/null
+++ b/src/components/Loader/Loader.test.tsx
@@ -0,0 +1,14 @@
+import React from "react";
+import { screen, render } from "@testing-library/react";
+
+import Loader from "./Loader";
+
+const setup = () => render();
+
+describe("Loader", () => {
+ it("should display loading message", () => {
+ setup();
+ const loadingText = screen.getByText("Loading...");
+ expect(loadingText).toBeInTheDocument();
+ });
+});
diff --git a/src/components/SiteHeader/SiteHeader.test.tsx b/src/components/SiteHeader/SiteHeader.test.tsx
new file mode 100644
index 0000000..4776995
--- /dev/null
+++ b/src/components/SiteHeader/SiteHeader.test.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import { screen } from "@testing-library/react";
+import renderConnected from "utilities/test/renderConnected";
+
+import SiteHeader from "./SiteHeader";
+
+const setup = () =>
+ renderConnected({
+ ui: ,
+ initialState: {
+ userProfile: {
+ username: "Steve",
+ },
+ },
+ });
+
+describe("SiteHeader", () => {
+ it("should display logo", () => {
+ setup();
+ const logoImg = screen.getByAltText("Company name");
+ expect(logoImg).toBeInTheDocument();
+ });
+});
diff --git a/src/state/userProfile/selectors.test.ts b/src/state/userProfile/selectors.test.ts
new file mode 100644
index 0000000..603a424
--- /dev/null
+++ b/src/state/userProfile/selectors.test.ts
@@ -0,0 +1,16 @@
+import { getUsername } from "./selectors";
+
+import { RootState } from "../rootReducer";
+
+describe("UserProfile selectors", () => {
+ describe("getUsername", () => {
+ it("should return username", () => {
+ const state: RootState = {
+ userProfile: {
+ username: "Steve",
+ },
+ };
+ expect(getUsername(state)).toBe("Steve");
+ });
+ });
+});