Claudio Ortolina
8ce5da65e2
Pin Brave search error body assertion
...
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
cedb86af5d
Pin OpenAI API error assertions to their shapes
...
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
6adfbea336
Pin Records.populate_genres error to OpenAI prefix
...
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
0ee0dcb118
Match decoded OpenAI error body, not raw JSON
...
Switch the 500-response stubs to Req.Test.json so Req decodes the
body, then match the map shape. Avoids coupling the assertion to
the exact JSON serialization.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
1429f7a826
Drop tautological delete.id checks
...
Repo.delete always returns the struct it was given, so deleted.id
== original.id is trivially true. Thread deleted.id through the
trailing get_*! call instead, so the binding is load-bearing.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
bb260437a1
Pin populate_genres error to OpenAI prefix
...
Match the string prefix "OpenAI API error:" that propagates from
OpenAI.gpt on non-2xx responses.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
a841ccf8e8
Tighten generate_record_embedding assertions
...
Assert stored embedding text matches the representation helper.
Pin the OpenAI-500 error path to the raw JSON body string.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
bbe0d5cd9e
Pin artist_refresh_discogs_data assertions
...
Bind the returned ArtistInfo. For the no-discogs branch, assert
discogs_data was not touched.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
f9e3e8c5f8
Pin artist_refresh_wikipedia_data assertions
...
Bind perform_job results and assert id equality. For the unchanged case,
also assert wikipedia_data is the same as before the job ran.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
914fb4fbee
Match specific errors on scrobble_rules duplicate
...
Pin the duplicate-rule error to the match_value field and "has already been
taken" message, matching the unique_constraint error_key in the changeset.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
9e29de55aa
Pin online_store_templates delete assertion
...
Assert deleted.id == template.id rather than wildcard-matching the
returned struct.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
a90fdcf82f
Tighten chats assertions
...
Pin invalid-attrs error to specific field, assert collection UUID round-trips
through Ecto.UUID.cast unchanged, and assert deleted.id == chat.id on delete.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
66c36f4d09
Tighten record_sets delete and duplicate assertions
...
Assert deleted.id == set.id on delete, and pin the duplicate error to the
specific field and message from the unique_constraint on record_set_id.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
60e95804ad
Tighten similarity test assertions
...
Bind returned embeddings and assert record_id / text_representation match.
Pin OpenAI error path to the actual raw string body returned by the stub.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
e0fe5051ec
Pin asset dedup assertion to same-hash
...
The duplicate prevention test asserted `{:ok, _}` twice without checking
that both calls returned the same asset. Assert hash equality.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
ae036e79fb
Tighten scrobble_activity assertions
...
Replace 9 `{:ok, _}` sites with specific response-body checks to verify
the context returns the Last.fm API payload and not just the success branch.
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
cf872cfed0
Secondary sort for artist albums in collection (purchase date desc)
2026-04-19 21:36:07 +01:00
Claudio Ortolina
7767933742
Give more space above the universal search input
2026-04-19 21:29:40 +01:00
Claudio Ortolina
f6becd85b4
More cover exclusions
2026-04-19 16:50:28 +01:00
Claudio Ortolina
beaf38fcfe
Add record_release tests
2026-04-19 16:11:32 +01:00
Claudio Ortolina
b79d8ded84
Exclude release module from cover
2026-04-19 16:02:18 +01:00
Claudio Ortolina
0dcfecf741
Increase render_async timeout to cater for slower CI
2026-04-19 09:29:04 +01:00
Claudio Ortolina
f4db063298
Test artist edit form and record set picker flows
...
Closes #180
2026-04-19 09:00:06 +01:00
Claudio Ortolina
da12d5d693
Handle ArtistLive.Form saved message in show view
2026-04-19 08:59:04 +01:00
Claudio Ortolina
c12b84bc23
Update production infrastructure docs
2026-04-19 07:55:09 +01:00
Claudio Ortolina
4422d8b02b
Document alias-at-top convention
2026-04-19 07:52:06 +01:00
Claudio Ortolina
45236e4b10
Convert ErrorIgnorer tests to doctests
2026-04-19 07:50:39 +01:00
Claudio Ortolina
06ae5f8271
Share recent tracks fixture between Last.fm tests
2026-04-19 07:50:15 +01:00
Claudio Ortolina
22a47f4ca9
Add tests for previously uncovered modules
2026-04-19 07:47:20 +01:00
Claudio Ortolina
1068de3096
Update npm dependencies
...
type-fest 5.5.0 => 5.6.0
2026-04-18 20:21:38 +01:00
Claudio Ortolina
84cb3ac7b8
Update dependencies
...
lumis 0.3.0 => 0.4.0 (minor)
2026-04-18 20:20:51 +01:00
Claudio Ortolina
fb1b60373d
Fix max width issue for release selector on mobile
2026-04-18 10:57:14 +01:00
Claudio Ortolina
f6bcf3d970
Partial fix for barcode scan camera persisting after disconnection
2026-04-18 10:50:41 +01:00
Claudio Ortolina
b37162fce3
Fix colors of mixed badges
2026-04-17 22:30:27 +01:00
Claudio Ortolina
94143010c0
Fix doubly-wrapped safe tuple in artist bio render
2026-04-17 16:00:22 +01:00
Claudio Ortolina
2ef86ae75a
Add mise task to summarize codebase shape
2026-04-17 15:12:19 +01:00
Claudio Ortolina
fd6eab82c0
Track fixture files as external resources
2026-04-17 14:02:45 +01:00
Claudio Ortolina
079f2a5f0f
Add BraveSearch facade tests
2026-04-17 13:57:36 +01:00
Claudio Ortolina
be6f4d2338
Enforce coverage threshold inline in CI test step
...
Closes #177
2026-04-17 13:37:13 +01:00
Claudio Ortolina
028c2a1b8d
Configure test coverage and enable on CI
2026-04-17 13:30:04 +01:00
Claudio Ortolina
d8d5524e41
Replace Process.sleep with sys.get_state in error notifier tests
...
Deterministic GenServer state polling instead of timing-based waits.
Fixes #169 .
2026-04-17 12:58:50 +01:00
Claudio Ortolina
e6a8488137
Use Notes.change_note/2 instead of Note.changeset/2 in notes component
...
Closes #171
2026-04-17 12:56:08 +01:00
Claudio Ortolina
4c5a3393e2
Run query reporter tests with async false
...
Avoid getting spurious failures due to interference by other tests
2026-04-17 10:29:43 +01:00
Claudio Ortolina
e98d7d1d8a
Add asset build step to lint CI job
2026-04-17 10:19:10 +01:00
Claudio Ortolina
96a1ea0923
Update node to 25.9.0
2026-04-17 10:19:10 +01:00
dependabot[bot]
ae14149a42
Bump node from 24-slim to 25-slim
...
Bumps node from 24-slim to 25-slim.
---
updated-dependencies:
- dependency-name: node
dependency-version: 25-slim
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-04-17 10:19:10 +01:00
Claudio Ortolina
f1013070bd
Monitor Dockerfile updates via Dependabot
...
Closes #175
2026-04-17 08:14:44 +01:00
Claudio Ortolina
d0d9c4ea75
Ignore some Claude working directories
2026-04-17 08:11:48 +01:00
Claudio Ortolina
2648d10034
Formalize standard set of Claude permissions
2026-04-17 08:11:31 +01:00
Claudio Ortolina
bbe1722c9f
Handle unencodable structs in QueryReporter params
2026-04-17 07:10:45 +01:00