docs: add testing philosophy to coding guideline
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
and update groups architecture docs #371
This commit is contained in:
parent
0216dfcbbb
commit
8e9fbe76cf
2 changed files with 99 additions and 29 deletions
|
|
@ -1515,6 +1515,40 @@ mix test test/membership/member_test.exs:42
|
|||
|
||||
### 4.7 Testing Best Practices
|
||||
|
||||
**Testing Philosophy: Focus on Business Logic, Not Framework Functionality**
|
||||
|
||||
We test our business logic and domain-specific behavior, not core framework features. Framework features (Ash validations, Ecto relationships, etc.) are already tested by their respective libraries.
|
||||
|
||||
**What We Test:**
|
||||
- Business rules and validations specific to our domain
|
||||
- Custom business logic (slug generation, calculations, etc.)
|
||||
- Integration between our resources
|
||||
- Database-level constraints (unique constraints, foreign keys, CASCADE)
|
||||
- Query performance (N+1 prevention)
|
||||
|
||||
**What We Don't Test:**
|
||||
- Framework core functionality (Ash validations work, Ecto relationships work, etc.)
|
||||
- Standard CRUD operations without custom logic
|
||||
- Framework-provided features that are already tested upstream
|
||||
- Detailed slug generation edge cases (Umlauts, truncation, etc.) if covered by reusable change tests
|
||||
|
||||
**Example:**
|
||||
```elixir
|
||||
# ✅ GOOD - Tests our business rule
|
||||
test "slug is immutable (doesn't change when name is updated)" do
|
||||
{:ok, group} = Membership.create_group(%{name: "Original"}, actor: actor)
|
||||
original_slug = group.slug
|
||||
|
||||
{:ok, updated} = Membership.update_group(group, %{name: "New"}, actor: actor)
|
||||
assert updated.slug == original_slug # Business rule: slug doesn't change
|
||||
end
|
||||
|
||||
# ❌ AVOID - Tests framework functionality
|
||||
test "Ash.Changeset validates required fields" do
|
||||
# This is already tested by Ash framework
|
||||
end
|
||||
```
|
||||
|
||||
**Descriptive Test Names:**
|
||||
|
||||
```elixir
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue