Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions routes/potentiometers/list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,12 @@ export default withWinterSpec({
query = query.where("package", "=", params.package)
}

// Apply exact resistance filter
// Apply resistance filter with a small tolerance for rounding errors
if (params.maxResistance !== undefined) {
query = query.where("max_resistance", "=", params.maxResistance)
const delta = params.maxResistance * 0.0001
query = query
.where("max_resistance", ">=", params.maxResistance - delta)
.where("max_resistance", "<=", params.maxResistance + delta)
}

// Apply pin variant filter
Expand Down
37 changes: 37 additions & 0 deletions tests/routes/potentiometers/list.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { test, expect } from "bun:test"
import { getTestServer } from "tests/fixtures/get-test-server"

test("GET /potentiometers/list with json param returns potentiometer data", async () => {
const { axios } = await getTestServer()

const res = await axios.get("/potentiometers/list?json=true")

expect(res.data).toHaveProperty("potentiometers")
expect(Array.isArray(res.data.potentiometers)).toBe(true)

if (res.data.potentiometers.length > 0) {
const pot = res.data.potentiometers[0]
expect(pot).toHaveProperty("lcsc")
expect(pot).toHaveProperty("mfr")
expect(pot).toHaveProperty("package")
expect(pot).toHaveProperty("maxResistance")
expect(pot).toHaveProperty("pinVariant")
}
})

test("GET /potentiometers/list with filters returns filtered data", async () => {
const { axios } = await getTestServer()

const res = await axios.get(
"/potentiometers/list?json=true&pinVariant=three_pin&maxResistance=10k",
)

expect(res.data).toHaveProperty("potentiometers")
expect(Array.isArray(res.data.potentiometers)).toBe(true)

for (const pot of res.data.potentiometers) {
expect(pot.pinVariant).toBe("three_pin")
const delta = Math.abs(pot.maxResistance - 10000)
expect(delta).toBeLessThanOrEqual(10000 * 0.0001 + 1e-9)
}
})
Loading