diff --git a/BUILDIT.md b/BUILDIT.md
index 16c0b06..26bf952 100644
--- a/BUILDIT.md
+++ b/BUILDIT.md
@@ -64,6 +64,9 @@ With that in place, let's get building!
- [Run Tests with Coverage](#run-tests-with-coverage)
- [2. Create Schemas to Store Data](#2-create-schemas-to-store-data)
- [2.1 Run Tests!](#21-run-tests)
+ - [2.2 Write Tests for Schema/Scaffold Code](#22-write-tests-for-schemascaffold-code)
+ - [2.2.1 User Tests](#221-user-tests)
+ - [2.2.2 Repository Tests](#222-repository-tests)
- [3. Input `users`](#3-input-users)
- [3.1 Make the `user` Tests Pass](#31-make-the-user-tests-pass)
- [4. Create `Timer`](#4-create-timer)
@@ -499,6 +502,157 @@ See: https://en.wikipedia.org/wiki/Scaffold_(programming)
+## 2.2 Write Tests for Schema/Scaffold Code
+
+The **`mix phx.gen.schema`** command
+doesn't create the test files for the schemas.
+We can create these quick.
+
+### 2.2.1 User Tests
+
+Create a new file with the path:
+`test/app/user_test.exs`
+
+Open the file and add the following test:
+
+```elixir
+defmodule App.UserTest do
+ use App.DataCase
+
+ test "App.User.create/1" do
+ user = %{
+ avatar_url: "https://avatars.githubusercontent.com/u/4185328?v=4",
+ bio: "Co-founder @dwyl",
+ blog: "https://www.twitter.com/iteles",
+ company: "@dwyl",
+ created_at: "2013-04-17T21:10:06Z",
+ email: nil,
+ followers: 378,
+ following: 79,
+ hireable: true,
+ html_url: "https://github.com/iteles",
+ id: 4185328,
+ location: "London, UK",
+ login: "iteles",
+ name: "Ines TC",
+ organizations_url: "https://api.github.com/users/iteles/orgs",
+ public_gists: 0,
+ public_repos: 31
+ }
+ assert {:ok, inserted_user} = App.User.create(user)
+ assert inserted_user.name == user.name
+ end
+end
+```
+
+If you run this test now:
+
+```sh
+mix test test/app/user_test.exs
+```
+
+it will _fail_ because the
+`App.User.create/1` function
+does not yet exist.
+
+Open the
+`lib/app/user.ex` file
+and add the following function defintion:
+
+```elixir
+ @doc """
+ Creates a `user`.
+ """
+ def create(attrs) do
+ %User{}
+ |> changeset(attrs)
+ |> Repo.insert()
+ end
+```
+
+Now when you re-run the test you should see it pass:
+
+```sh
+mix test test/app/user_test.exs
+.
+
+Finished in 0.05 seconds (0.00s async, 0.05s sync)
+1 test, 0 failures
+```
+
+### 2.2.2 Repository Tests
+
+Create a file with the path:
+`test/app/repository_test.exs`
+
+Add the following test code to the file:
+
+```elixir
+defmodule App.RepositoryTest do
+ use App.DataCase
+
+ test "App.Repository.create/1" do
+ repo = %{
+ created_at: "2014-03-02T13:20:04Z",
+ description: "This your first repo!",
+ fork: false,
+ forks_count: 110,
+ full_name: "dwyl/start-here",
+ id: 17338019,
+ name: "start-here",
+ open_issues_count: 98,
+ pushed_at: "2022-08-10T07:41:05Z",
+ stargazers_count: 1604,
+ topics: Enum.join(["beginner", "beginner-friendly", "how-to", "howto", "learn",
+ "starter-kit"], ","),
+ watchers_count: 1604
+ }
+ assert {:ok, inserted_repo} = App.Repository.create(repo)
+ assert inserted_repo.name == repo.name
+ end
+end
+```
+
+If you run this test with the command:
+
+```sh
+mix t test/app/repository_test.exs
+```
+
+You will see it _fail_ because the
+`App.Repository.create/1` function
+does not yet exist.
+
+Open the
+`lib/app/repository.ex`
+file and add the following function to the bottom:
+
+```elixir
+
+```
+
+If you get stuck, you can always refer to the
+file in the finished project:
+
+
+
+
+
+
+At this point,
+if you re-run _all_ the tests with coverage:
+
+```sh
+mix c
+```
+
+
+
+
+
+
+
+
# 3. Input `users`
We're going to