forked from mirrors/homebox
fix: profile bugs and add full path (#792)
* fix template rendering * tidy * fix missing currencies and profile errors * endpoint for fullpath of an item * endpoint test * fix assertions
This commit is contained in:
parent
3ed50f5a1b
commit
c708b1759e
19 changed files with 416 additions and 105 deletions
|
@ -155,4 +155,42 @@ describe("user should be able to create an item and add an attachment", () => {
|
|||
|
||||
cleanup();
|
||||
});
|
||||
|
||||
test("full path of item should be retrievable", async () => {
|
||||
const api = await sharedUserClient();
|
||||
const [location, cleanup] = await useLocation(api);
|
||||
|
||||
const locations = [location.name, faker.animal.dog(), faker.animal.cat(), faker.animal.cow(), faker.animal.bear()];
|
||||
|
||||
let lastLocationId = location.id;
|
||||
for (let i = 1; i < locations.length; i++) {
|
||||
// Skip first one
|
||||
const { response, data: loc } = await api.locations.create({
|
||||
parentId: lastLocationId,
|
||||
name: locations[i],
|
||||
description: "",
|
||||
});
|
||||
expect(response.status).toBe(201);
|
||||
|
||||
lastLocationId = loc.id;
|
||||
}
|
||||
|
||||
const { response, data: item } = await api.items.create({
|
||||
name: faker.vehicle.model(),
|
||||
labelIds: [],
|
||||
description: faker.lorem.paragraph(1),
|
||||
locationId: lastLocationId,
|
||||
});
|
||||
expect(response.status).toBe(201);
|
||||
|
||||
const { response: pathResponse, data: fullpath } = await api.items.fullpath(item.id);
|
||||
expect(pathResponse.status).toBe(200);
|
||||
|
||||
const names = fullpath.map(p => p.name);
|
||||
|
||||
expect(names).toHaveLength(locations.length + 1);
|
||||
expect(names).toEqual([...locations, item.name]);
|
||||
|
||||
cleanup();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,6 +5,7 @@ import {
|
|||
ItemCreate,
|
||||
ItemOut,
|
||||
ItemPatch,
|
||||
ItemPath,
|
||||
ItemSummary,
|
||||
ItemUpdate,
|
||||
MaintenanceEntry,
|
||||
|
@ -105,6 +106,10 @@ export class ItemsApi extends BaseAPI {
|
|||
this.maintenance = new MaintenanceAPI(http);
|
||||
}
|
||||
|
||||
fullpath(id: string) {
|
||||
return this.http.get<ItemPath[]>({ url: route(`/items/${id}/path`) });
|
||||
}
|
||||
|
||||
getAll(q: ItemsQuery = {}) {
|
||||
return this.http.get<PaginationResult<ItemSummary>>({ url: route("/items", q) });
|
||||
}
|
||||
|
|
|
@ -128,6 +128,12 @@ export interface ItemPatch {
|
|||
quantity?: number | null;
|
||||
}
|
||||
|
||||
export interface ItemPath {
|
||||
id: string;
|
||||
name: string;
|
||||
type: ItemType;
|
||||
}
|
||||
|
||||
export interface ItemSummary {
|
||||
archived: boolean;
|
||||
createdAt: Date | string;
|
||||
|
@ -145,6 +151,11 @@ export interface ItemSummary {
|
|||
updatedAt: Date | string;
|
||||
}
|
||||
|
||||
export enum ItemType {
|
||||
ItemTypeLocation = "location",
|
||||
ItemTypeItem = "item",
|
||||
}
|
||||
|
||||
export interface ItemUpdate {
|
||||
archived: boolean;
|
||||
assetId: string;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue