Skip to content

Commit

Permalink
Update order_file tests
Browse files Browse the repository at this point in the history
  • Loading branch information
andrii-balitskyi committed Oct 16, 2024
1 parent 53936b1 commit a97e9a1
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 24 deletions.
3 changes: 2 additions & 1 deletion fake-snippets-api/routes/api/order_files/upload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ export default withRouteSpec({
order_file: orderFileSchema,
}),
})(async (req, ctx) => {
const { order_id, content_base64, is_gerbers_zip, for_provider } = req.jsonBody
const { order_id, content_base64, is_gerbers_zip, for_provider } =
req.jsonBody

const order = ctx.db.getOrderById(order_id)
if (!order) {
Expand Down
18 changes: 8 additions & 10 deletions fake-snippets-api/tests/routes/order_files/get.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,14 @@ test("get order file", async () => {
},
} = await getTestServer()

const file = new File(["test file content"], "test.txt", {
type: "text/plain",
})
const formData = new FormData()
formData.append("order_id", order_id)
formData.append("file", file)
formData.append("is_gerbers_zip", "false")
const fileContent = "test file content"
const fileContentBase64 = Buffer.from(fileContent).toString("base64")

const uploadResponse = await axios.post("/api/order_files/upload", formData)
const uploadResponse = await axios.post("/api/order_files/upload", {
order_id,
content_base64: fileContentBase64,
is_gerbers_zip: false,
})

const orderFileId = uploadResponse.data.order_file.order_file_id

Expand All @@ -29,8 +28,7 @@ test("get order file", async () => {
expect(response.data.order_file).toBeDefined()
expect(response.data.order_file.order_file_id).toBe(orderFileId)
expect(response.data.order_file.order_id).toBe(order_id)
expect(response.data.order_file.file_name).toBe("test.txt")
expect(response.data.order_file.file_size).toBe(18)
expect(response.data.order_file.content_type).toBe("base64")
expect(response.data.order_file.is_gerbers_zip).toBe(false)
})

Expand Down
72 changes: 59 additions & 13 deletions fake-snippets-api/tests/routes/order_files/upload.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,76 @@ import { getTestServer } from "fake-snippets-api/tests/fixtures/get-test-server"
import { test, expect } from "bun:test"

test("upload order file", async () => {
const {
axios,
seed: {
order: { order_id },
},
} = await getTestServer()

const fileContent = "test file content"
const fileContentBase64 = Buffer.from(fileContent).toString("base64")

const response = await axios.post("/api/order_files/upload", {
order_id,
content_base64: fileContentBase64,
is_gerbers_zip: false,
})

expect(response.status).toBe(200)
expect(response.data.order_file).toBeDefined()
expect(response.data.order_file.order_id).toBe(order_id)
expect(response.data.order_file.file_content).toBeDefined()
expect(response.data.order_file.content_type).toBe("base64")
expect(response.data.order_file.is_gerbers_zip).toBe(false)
expect(response.data.order_file.uploaded_at).toBeDefined()
})

test("upload order file with for_provider", async () => {
const { axios, db } = await getTestServer()

// First, create an order
const orderResponse = await axios.post("/api/orders/create", {
circuit_json: { test: "circuit data" },
})

const orderId = orderResponse.data.order.order_id

// Now, upload a file for this order
const file = new File(["test file content"], "test.txt", {
type: "text/plain",
})
const formData = new FormData()
formData.append("order_id", orderId)
formData.append("file", file)
formData.append("is_gerbers_zip", "false")
const fileContent = "test file content for provider"
const fileContentBase64 = Buffer.from(fileContent).toString("base64")

const response = await axios.post("/api/order_files/upload", formData)
const response = await axios.post("/api/order_files/upload", {
order_id: orderId,
content_base64: fileContentBase64,
is_gerbers_zip: true,
for_provider: "jlcpcb",
})

expect(response.status).toBe(200)
expect(response.data.order_file).toBeDefined()
expect(response.data.order_file.order_id).toBe(orderId)
expect(response.data.order_file.file_name).toBe("test.txt")
expect(response.data.order_file.file_size).toBe(18) // "test file content".length
expect(response.data.order_file.is_gerbers_zip).toBe(false)
expect(response.data.order_file.file_content).toBeDefined()
expect(response.data.order_file.content_type).toBe("base64")
expect(response.data.order_file.is_gerbers_zip).toBe(true)
expect(response.data.order_file.for_provider).toBe("jlcpcb")
expect(response.data.order_file.uploaded_at).toBeDefined()
})

test("upload order file for non-existent order", async () => {
const { axios } = await getTestServer()

const fileContent = "test file content"
const fileContentBase64 = Buffer.from(fileContent).toString("base64")

try {
await axios.post("/api/order_files/upload", {
order_id: "non-existent-order-id",
content_base64: fileContentBase64,
is_gerbers_zip: false,
})
// If the request doesn't throw an error, fail the test
expect(true).toBe(false)
} catch (error: any) {
expect(error.status).toBe(404)
expect(error.data.error.message).toBe("Order not found")
}
})

0 comments on commit a97e9a1

Please sign in to comment.