   }
 
   describe "validate/1" do
-    test "good, contains required keys only" do
+    test "validates a map containing required keys only" do
       assert :ok = validate(@base_map)
     end
 
-    test "good, also contains optional keys" do
+    test "validates a map containing optional keys" do
       map =
         Map.merge(@base_map, %{
           server_root: "https://example.com/test",

          preview_length: -1,
          theme: "Serum.TestTheme"
        })

      {:invalid, l} = validate(map)

      assert length(l) == 6
    end

      assert :ok = validate(map)
    end

    test "fails when the given argument is not a map" do
      assert {:invalid, _} = validate(:foo)
    end

    test "fails when only one required key is missing" do
      map = Map.delete(@base_map, :base_url)
      {:invalid, msg} = validate(map)

      assert String.starts_with?(msg, "missing required property:")
    end

    test "fails when multiple required keys are missing" do
      map = Map.drop(@base_map, [:base_url, :site_description])
      {:invalid, msg} = validate(map)

      assert String.starts_with?(msg, "missing required properties:")
    end

    test "fails when there is one extra key" do
      map = Map.put(@base_map, :foo, :bar)
      {:invalid, msg} = validate(map)

      assert String.starts_with?(msg, "unknown property:")
    end

    test "fails when there are multiple extra keys" do
      map =
        @base_map
        |> Map.put(:foo, :bar)
