I’m new to LiveView and also the automatically generated tests. My tests are failing for what I’m sure is a simple reason, I just don’t know where to look, and can’t find an answer in this forum.
I am creating entities which—for audit trail/history-keeping reasons—must not allow deletion. Instead, my entities each have an ‘is_active’ boolean field in them; when they are no longer needed, they can be deactivated, (by turning the is_active
field to false).
Therefore, I don’t actually want the is_active
field displayed in the new and edit forms, removing it from the form_component.ex
file.
As soon as I do that, the automated tests produce three (identical) failures, all complaining that the field cannot be found:
** (ArgumentError) could not find non-disabled input, select or textarea with name "continent[is_active]" within:
I’ve looked in the fixture, and in the relevant _web
tests, in the _live_test.ex
file. Admittedly, I do not understand ExUnit, nor Phoenix.LiveViewTest very well yet, and cannot work out where this field is defined as expected, and how to disable the automated tests expecting it.
Any pointers from those who have come across this and have fixed it would be appreciated, as well as good resources instructing on best (pragmatic) use of this testing framework would be an enormous help.
Environment and reproducing
I’m running Elixir 1.14.3, Phoenix 1.7.2, Phoenix LiveView 0.18.16, and have been able to reproduce the above with a fresh Phoenix instance, creating a single entity, continents
using Phoenix’ automatic generation:
mix phx.gen.live Resources Continent continents continent_code:string name:string is_active:boolean
I can confirm that all automatically generated tests pass, right up until I remove the following line from the live/continent_live/form_component.ex
file:
<.input field={@form[:is_active]}... />
This imediately results in three failed tests with the ** (ArgumentError) could not find non-disabled input...
error.