mirror of
https://github.com/hay-kot/homebox.git
synced 2025-05-22 21:32:28 +00:00
refactor: repositories (#28)
* cleanup unnecessary mocks * refactor document storage location * remove unused function * move ownership to document types to repo package * move types and mappers to repo package * refactor sets to own package
This commit is contained in:
parent
2e82398e5c
commit
343290a55a
79 changed files with 3169 additions and 3160 deletions
|
@ -14,11 +14,9 @@ describe("first time user workflow (register, login)", () => {
|
|||
const api = client();
|
||||
const userData = {
|
||||
groupName: "test-group",
|
||||
user: {
|
||||
email: "test-user@email.com",
|
||||
name: "test-user",
|
||||
password: "test-password",
|
||||
},
|
||||
email: "test-user@email.com",
|
||||
name: "test-user",
|
||||
password: "test-password",
|
||||
};
|
||||
|
||||
test("user should be able to register", async () => {
|
||||
|
@ -27,7 +25,7 @@ describe("first time user workflow (register, login)", () => {
|
|||
});
|
||||
|
||||
test("user should be able to login", async () => {
|
||||
const { response, data } = await api.login(userData.user.email, userData.user.password);
|
||||
const { response, data } = await api.login(userData.email, userData.password);
|
||||
expect(response.status).toBe(200);
|
||||
expect(data.token).toBeTruthy();
|
||||
|
||||
|
|
|
@ -31,15 +31,13 @@ export async function sharedUserClient(): Promise<UserApi> {
|
|||
}
|
||||
const testUser = {
|
||||
groupName: "test-group",
|
||||
user: {
|
||||
email: "__test__@__test__.com",
|
||||
name: "__test__",
|
||||
password: "__test__",
|
||||
},
|
||||
email: "__test__@__test__.com",
|
||||
name: "__test__",
|
||||
password: "__test__",
|
||||
};
|
||||
|
||||
const api = client();
|
||||
const { response: tryLoginResp, data } = await api.login(testUser.user.email, testUser.user.password);
|
||||
const { response: tryLoginResp, data } = await api.login(testUser.email, testUser.password);
|
||||
|
||||
if (tryLoginResp.status === 200) {
|
||||
cache.token = data.token;
|
||||
|
@ -49,7 +47,7 @@ export async function sharedUserClient(): Promise<UserApi> {
|
|||
const { response: registerResp } = await api.register(testUser);
|
||||
expect(registerResp.status).toBe(204);
|
||||
|
||||
const { response: loginResp, data: loginData } = await api.login(testUser.user.email, testUser.user.password);
|
||||
const { response: loginResp, data: loginData } = await api.login(testUser.email, testUser.password);
|
||||
expect(loginResp.status).toBe(200);
|
||||
|
||||
cache.token = loginData.token;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import { BaseAPI, route } from "../base";
|
||||
import { LocationCount, LocationCreate, LocationOut } from "../types/data-contracts";
|
||||
import { LocationOutCount, LocationCreate, LocationOut } from "../types/data-contracts";
|
||||
import { Results } from "./types";
|
||||
|
||||
export type LocationUpdate = LocationCreate;
|
||||
|
||||
export class LocationsApi extends BaseAPI {
|
||||
getAll() {
|
||||
return this.http.get<Results<LocationCount>>({ url: route("/locations") });
|
||||
return this.http.get<Results<LocationOutCount>>({ url: route("/locations") });
|
||||
}
|
||||
|
||||
create(body: LocationCreate) {
|
||||
|
|
|
@ -1,24 +1,11 @@
|
|||
import { BaseAPI, route } from "./base";
|
||||
|
||||
export type LoginResult = {
|
||||
token: string;
|
||||
expiresAt: string;
|
||||
};
|
||||
import { ApiSummary, TokenResponse, UserRegistration } from "./types/data-contracts";
|
||||
|
||||
export type LoginPayload = {
|
||||
username: string;
|
||||
password: string;
|
||||
};
|
||||
|
||||
export type RegisterPayload = {
|
||||
user: {
|
||||
email: string;
|
||||
password: string;
|
||||
name: string;
|
||||
};
|
||||
groupName: string;
|
||||
};
|
||||
|
||||
export type StatusResult = {
|
||||
health: boolean;
|
||||
versions: string[];
|
||||
|
@ -28,11 +15,11 @@ export type StatusResult = {
|
|||
|
||||
export class PublicApi extends BaseAPI {
|
||||
public status() {
|
||||
return this.http.get<StatusResult>({ url: route("/status") });
|
||||
return this.http.get<ApiSummary>({ url: route("/status") });
|
||||
}
|
||||
|
||||
public login(username: string, password: string) {
|
||||
return this.http.post<LoginPayload, LoginResult>({
|
||||
return this.http.post<LoginPayload, TokenResponse>({
|
||||
url: route("/users/login"),
|
||||
body: {
|
||||
username,
|
||||
|
@ -41,7 +28,7 @@ export class PublicApi extends BaseAPI {
|
|||
});
|
||||
}
|
||||
|
||||
public register(body: RegisterPayload) {
|
||||
return this.http.post<RegisterPayload, LoginResult>({ url: route("/users/register"), body });
|
||||
public register(body: UserRegistration) {
|
||||
return this.http.post<UserRegistration, TokenResponse>({ url: route("/users/register"), body });
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,36 +10,6 @@
|
|||
* ---------------------------------------------------------------
|
||||
*/
|
||||
|
||||
export interface ServerResult {
|
||||
details: any;
|
||||
error: boolean;
|
||||
item: any;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface ServerResults {
|
||||
items: any;
|
||||
}
|
||||
|
||||
export interface ServerValidationError {
|
||||
field: string;
|
||||
reason: string;
|
||||
}
|
||||
|
||||
export interface ApiSummary {
|
||||
build: Build;
|
||||
health: boolean;
|
||||
message: string;
|
||||
title: string;
|
||||
versions: string[];
|
||||
}
|
||||
|
||||
export interface Build {
|
||||
buildTime: string;
|
||||
commit: string;
|
||||
version: string;
|
||||
}
|
||||
|
||||
export interface DocumentOut {
|
||||
id: string;
|
||||
path: string;
|
||||
|
@ -54,10 +24,6 @@ export interface ItemAttachment {
|
|||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface ItemAttachmentToken {
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface ItemAttachmentUpdate {
|
||||
title: string;
|
||||
type: string;
|
||||
|
@ -99,8 +65,6 @@ export interface ItemOut {
|
|||
/** Purchase */
|
||||
purchaseTime: Date;
|
||||
quantity: number;
|
||||
|
||||
/** Identifications */
|
||||
serialNumber: string;
|
||||
soldNotes: string;
|
||||
|
||||
|
@ -122,39 +86,11 @@ export interface ItemSummary {
|
|||
insured: boolean;
|
||||
labels: LabelSummary[];
|
||||
|
||||
/** Warranty */
|
||||
lifetimeWarranty: boolean;
|
||||
|
||||
/** Edges */
|
||||
location: LocationSummary;
|
||||
manufacturer: string;
|
||||
modelNumber: string;
|
||||
name: string;
|
||||
|
||||
/** Extras */
|
||||
notes: string;
|
||||
purchaseFrom: string;
|
||||
|
||||
/** @example 0 */
|
||||
purchasePrice: string;
|
||||
|
||||
/** Purchase */
|
||||
purchaseTime: Date;
|
||||
quantity: number;
|
||||
|
||||
/** Identifications */
|
||||
serialNumber: string;
|
||||
soldNotes: string;
|
||||
|
||||
/** @example 0 */
|
||||
soldPrice: string;
|
||||
|
||||
/** Sold */
|
||||
soldTime: Date;
|
||||
soldTo: string;
|
||||
updatedAt: Date;
|
||||
warrantyDetails: string;
|
||||
warrantyExpires: Date;
|
||||
}
|
||||
|
||||
export interface ItemUpdate {
|
||||
|
@ -220,15 +156,6 @@ export interface LabelSummary {
|
|||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface LocationCount {
|
||||
createdAt: Date;
|
||||
description: string;
|
||||
id: string;
|
||||
itemCount: number;
|
||||
name: string;
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface LocationCreate {
|
||||
description: string;
|
||||
name: string;
|
||||
|
@ -243,6 +170,15 @@ export interface LocationOut {
|
|||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface LocationOutCount {
|
||||
createdAt: Date;
|
||||
description: string;
|
||||
id: string;
|
||||
itemCount: number;
|
||||
name: string;
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface LocationSummary {
|
||||
createdAt: Date;
|
||||
description: string;
|
||||
|
@ -251,17 +187,6 @@ export interface LocationSummary {
|
|||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface TokenResponse {
|
||||
expiresAt: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface UserIn {
|
||||
email: string;
|
||||
name: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface UserOut {
|
||||
email: string;
|
||||
groupId: string;
|
||||
|
@ -271,12 +196,53 @@ export interface UserOut {
|
|||
name: string;
|
||||
}
|
||||
|
||||
export interface UserRegistration {
|
||||
groupName: string;
|
||||
user: UserIn;
|
||||
}
|
||||
|
||||
export interface UserUpdate {
|
||||
email: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export interface ServerResult {
|
||||
details: any;
|
||||
error: boolean;
|
||||
item: any;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface ServerResults {
|
||||
items: any;
|
||||
}
|
||||
|
||||
export interface ServerValidationError {
|
||||
field: string;
|
||||
reason: string;
|
||||
}
|
||||
|
||||
export interface UserRegistration {
|
||||
email: string;
|
||||
groupName: string;
|
||||
name: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface ApiSummary {
|
||||
build: Build;
|
||||
health: boolean;
|
||||
message: string;
|
||||
title: string;
|
||||
versions: string[];
|
||||
}
|
||||
|
||||
export interface Build {
|
||||
buildTime: string;
|
||||
commit: string;
|
||||
version: string;
|
||||
}
|
||||
|
||||
export interface ItemAttachmentToken {
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface TokenResponse {
|
||||
expiresAt: string;
|
||||
token: string;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue