If you run the tests at this point, typing everything in exactly, you get an error with the Project#total_size method.

Specifically, the error is: "nil can't be coerced into Integer".

This also happens with Project#remaining_size.

If I look at the Task object being passed in, it does have a size. For example:

Task:0x00... @completed=true, @size=2

So size is most definitely not nil.

I have double-checked the code as it is provided in the book and I have a line by line comparison showing no difference in code at all. And, again, you can see the object representation I'm getting above, so I definitely have @size and it definitely has a value. So I have to assume I'm not reading the error correctly.
--Jeff Nyman

If you run the tests at this point, typing everything in exactly, you get an error with the Project#total_size method.
Specifically, the error is: ...more...

Reported in:
P1.0
(12-Mar-18)

#82902Paper page: 32

In the first paragraph, the author writes "This test fails first on the creation of Task.new(size:2, completed:true)" when in-fact, using the code as it is written up to the that point, the test actually passes. --Taylor L.

In the first paragraph, the author writes "This test fails first on the creation of Task.new(size:2, completed:true)" when in-fact, using the code as ...more...

Reported in:
B2.0
(30-Jan-18)

#82712PDF page: 35

be_part_of_velocity doesn't match code from block on page 34, which states be_a_part_of_velocity--Aaron Kelton

Reported in:
P1.0
(22-Apr-18)

#83036Paper page: 96

Sizable is misspelled throughout this chapter which impacts the module name and filename. Which is the main issue. But most importantly, the code snippet on page 96 uses the correct spelling, which is inconsistent with the previous code. Here, "sizable" should be "sizeable" to match the other incorrect spellings.

(I'm curious about how the misspelling made it through the spell check process.)--Yong Bakos

Sizable is misspelled throughout this chapter which impacts the module name and filename. Which is the main issue. But most importantly, the code snip...more...

Reported in:
P1.0
(22-Apr-18)

#83037Paper page: 97

At this point in the test, there is a method Project#total_size. But this section depends on a Project#size method, which the custom matcher uses. Running this code results in a NoMethodError. The test should guide readers into implementing a Project#size method or the custom matcher should be rewritten around the #total_size semantics.
--Yong Bakos

At this point in the test, there is a method Project#total_size. But this section depends on a Project#size method, which the custom matcher uses. Run...more...

Reported in:
P1.0
(22-Apr-18)

#83038Paper page: 98

was #{actual}
should be
was #{actual.size}

Otherwise the test failure message displays the object representation and not the meaningful actual value.

--Yong Bakos

was #{actual}
should be
was #{actual.size}
Otherwise the test failure message displays the object representation and not the meaningful actual v...more...

Reported in:
P1.0
(07-May-18)

#83064Paper page: 114

First bullet: "attributes_for" is incorrectly written as "attribute_for".

--Yong Bakos

Reported in:
P1.0
(07-May-18)

#83065Paper page: 117

Second paragraph:
"My preferred strategy is to not specify attributes"
should be:
"My preferred strategy is to not specify associations"
--Yong Bakos

Second paragraph:
"My preferred strategy is to not specify attributes"
should be:
"My preferred strategy is to not specify associations"
--Yong Ba...more...

Reported in:
P1.0
(07-May-18)

#83066Paper page: 121

The state of the project_spec "estimates" section does not match the traits created in this chapter, and so applying those traits causes tests to fail. See page 113 (data/01/spec/models/project_spec.rb) for the starting state.

While the book indicates a subtle change (from 5 to 6 in the test) it should also indicate a change to the following test:

it "knows its projected days remaining" do
expect(project.projected_days_remaining).to eq(42)
end

(Was 35.)
--Yong Bakos

The state of the project_spec "estimates" section does not match the traits created in this chapter, and so applying those traits causes tests to fail...more...

Reported in:
P1.0
(10-May-18)

#83086Paper page: 122

When I ran bin/factory_bot.rb, I got a different notification for panic:

After scoping the order of project tasks, I had a few unrelated tests fail. I ended up needing to add inverse_of to the relationships to make it work....more...

Reported in:
P1.0
(17-May-18)

#83101Paper page: 166

it "makes 1... in an entry project"

Should be

it "makes 1... in an empty project"

--Yong Bakos

Reported in:
P1.0
(17-May-18)

#83103Paper page: 166

The controller implementation on this page, integration/02/app/controllers/task_controller.rb should omit:

- the before_action
- the methods up and down

As they are intended to be introduced on page 170, in a listing for the same controller.

--Yong Bakos

The controller implementation on this page, integration/02/app/controllers/task_controller.rb should omit:
- the before_action
- the methods up an...more...

Reported in:
P1.0
(17-May-18)

#83102Paper page: 167

On this page (167), the listing for integration/02/spec/models/task_spec.rb should _only_ contain a single test, "can determine that a task is first or last." The remaining tests are introduced on page 169. The extra tests are inconsistent with the statement following the code listing on page 168, "That's more assertions than I would normally place in a single test." In addition, the implementation that follows does not enable the reader to have the unit tests pass - as there are more tests than the implementation addresses.

Solution: all the tests in that listing on page 167 should be removed except for "can determine that a task is first or last."
--Yong Bakos

On this page (167), the listing for integration/02/spec/models/task_spec.rb should _only_ contain a single test, "can determine that a task is first o...more...

Reported in:
P1.0
(20-May-18)

#83113Paper page: 171

Ok, this technical error is a major one.

As of page 171, one major omission is that, in chapter 8, the author does not guide the user through an important addition to CreatesProject#convert_string_to_tasks. What was:

Without this, the DOM id's of the task elements after creating a *new* project with initial tasks is "task_". You can verify this in the code in integration/02. Run the server, add a project, view the source, and notice the incorrect DOM ids.

This should be incorporated somewhere in chapter 8 before the "Retrospective" section, and enhanced under test.
--Yong Bakos

Ok, this technical error is a major one.
As of page 171, one major omission is that, in chapter 8, the author does not guide the user through an im...more...

Reported in:
P1.0
(19-May-18)

#83107Paper page: 173

Here is features_add_task.feature

should be:

Here is features/add_task.feature

--Yong Bakos

Reported in:
P1.0
(19-May-18)

#83108Paper page: 174

In the cucumber pages, although Rappin states the version of cucumber and cucumber-rails used, it is important to note that cucumber has changed the default step definitions to use strings instead of regexes.

As such, all the code excerpts that include the classic default cucumber regexes is inconsistent with what the reader sees when working with cucumber in this chapter. For consistency, I suggest using strings rather than regexes to match the default cucumber output for pending step definitions.

--Yong Bakos

In the cucumber pages, although Rappin states the version of cucumber and cucumber-rails used, it is important to note that cucumber has changed the d...more...

Reported in:
P1.0
(09-Mar-18)

#82885PDF page: 174

The cucumber feature test is in the "features" directory not the "feature" directory. It should be "cucumber features/add_task.feature" instead of "cucumber feature/add_task.feature".--Joel Schneider

The cucumber feature test is in the "features" directory not the "feature" directory. It should be "cucumber features/add_task.feature" instead of "cu...more...

Reported in:
P1.0
(19-May-18)

#83109Paper page: 178

The Scenario Outline on pages 178-179 embolden the word in, with no explanation about why. This should be of normal weight, so as to not mislead the reader.
--Yong Bakos

The Scenario Outline on pages 178-179 embolden the word in, with no explanation about why. This should be of normal weight, so as to not mislead the r...more...

And the following td should be typeset in bold/grey markup.
--Yong Bakos

In the code listing, the first tr within tbody is inconsistent:
<tr id="task_<%= task.project_order %>" data-task-id=<%= task.id >>
Should be:
...more...

Reported in:
P1.0
(20-May-18)

#83112Paper page: 186

When you generated the Rails application you included Webpacker...

But we did not, nor does the author prompt us to way back in chapter 2 where we:

rails new .

Instead of:

rails new . --webpack

As such, this section should explicitly describe modifying the Gemfile:

gem 'webpacker'

Before running 'rails webpacker:install'.

--Yong Bakos

When you generated the Rails application you included Webpacker...
But we did not, nor does the author prompt us to way back in chapter 2 where we:...more...

Reported in:
P1.0
(24-May-18)

#83131Paper page: 199

The last test description reads:

"handles asking for the bottom task to move up"

But should be:

"handles asking for the bottom task to move down"
--Yong Bakos

The last test description reads:
"handles asking for the bottom task to move up"
But should be:
"handles asking for the bottom task to move d...more...

Reported in:
P1.0
(09-Mar-18)

#82886PDF page: 204

Type in test name "uses the fake laoder to load a Project". It should be "uses the fake loader to load a Project".--Joel Schneider

Reported in:
P1.0
(18-Mar-18)

#82921PDF page: 215

Going forward in the code examples I found that the code was missing on previous chapters, but included in later chapters, and that way I was able to make the web app works successfully. I also found that the swap_order_with method has an error, to reproduce it simply add 3 tasks on a project, then start the rails and webpack server then click "Up" on the second element on the list, you will see a backend exception undefined method project_order for nil:NilClass.--victor hazbun

Going forward in the code examples I found that the code was missing on previous chapters, but included in later chapters, and that way I was able to ...more...

Noel Rappin says: Hi -- I'm not seeing the error you are seeing, can you give me a little more information about how you set this up? Or possibly let me look at the code as you built?

Reported in:
P1.0
(18-Mar-18)

#82922PDF page: 217

At this point of the book, I found that front-end has a critical error: the DOM task_#id was actually the project_order you can notice this on the project.js file, the functionloadFromData is creating new instances of Task and assigning the id as the project_order. This has to be a joke... Since the core of the app / tests are based on the ID the hole tests breaks when you put the correct code, which is the task ID.--victor hazbun

At this point of the book, I found that front-end has a critical error: the DOM task_#id was actually the project_order you can notice this on the pro...more...

Noel Rappin says: Yes, it does seem that the project.js file is using the project_order. I believe I did this to allow for the use of new objects from the form at the bottom to be created locally (in which case they wouldn't have an ID), but I wound up not having space for that and should have reverted it back to using the ID. That said, I don't see errors on the page or in the tests if I replace that with the id. Can you give more information about the errors you are seeing.

Reported in:
P1.0
(18-Mar-18)

#82920PDF page: 225

After reaching the section "Connecting the JavaScript to the Server Code", I ran the rails server and the webpacker dev server and noticed that the "projects.js" was not working... The dom does not have a class ".task-table". Also this book have many errors everywhere and it should not been on release since it is not ready to be sold. The tests passes even when the app is not working as intended, I though the TDD was a way to make your code work in a solid way but I realize after reading the 60% that this is false. Tests that passes with a broken app? Come on.--victor hazbun

After reaching the section "Connecting the JavaScript to the Server Code", I ran the rails server and the webpacker dev server and noticed that the "p...more...

Noel Rappin says: The example code does have a `task-table` dom class in app/views/projects/show.html.erb, in the js_jasmine/2 and js_jasmine/3 folders, however it doesn't look like that code change was presented in the text. That's an oversight on my part -- the text is focused on the JS changes, and I missed this one. I'm sorry that it hurt your experience with the book.

Reported in:
B2.0
(04-Feb-18)

#82749PDF page: 245

When you run *racks* test -> (rails? rake?)--Ian Fleeton

Reported in:
P1.0
(10-Mar-18)

#82891Paper page: 245

The line require test_helper ... as the test_helper file

should be

The line require "test_helper" ... as the test_helper.rb file

--Yong Bakos

The line require test_helper ... as the test_helper file
should be
The line require "test_helper" ... as the test_helper.rb file
--Yong Bak...more...