optimized condition checks
This commit is contained in:
@@ -11,8 +11,6 @@ jest.mock('../../../middleware/auth', () => ({
|
||||
|
||||
jest.mock('../../../services/conditionCheckService', () => ({
|
||||
submitConditionCheck: jest.fn(),
|
||||
getConditionChecks: jest.fn(),
|
||||
getConditionCheckTimeline: jest.fn(),
|
||||
getAvailableChecks: jest.fn(),
|
||||
}));
|
||||
|
||||
@@ -183,97 +181,8 @@ describe('Condition Check Routes', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /condition-checks/:rentalId', () => {
|
||||
it('should return condition checks for a rental', async () => {
|
||||
const mockChecks = [
|
||||
{
|
||||
id: 'check-1',
|
||||
checkType: 'pre_rental',
|
||||
notes: 'Good condition',
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
},
|
||||
{
|
||||
id: 'check-2',
|
||||
checkType: 'post_rental',
|
||||
notes: 'Minor wear',
|
||||
createdAt: '2024-01-15T00:00:00Z',
|
||||
},
|
||||
];
|
||||
|
||||
ConditionCheckService.getConditionChecks.mockResolvedValue(mockChecks);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks/rental-123');
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
expect(response.body.conditionChecks).toHaveLength(2);
|
||||
expect(response.body.conditionChecks[0].checkType).toBe('pre_rental');
|
||||
expect(ConditionCheckService.getConditionChecks).toHaveBeenCalledWith('rental-123');
|
||||
});
|
||||
|
||||
it('should return empty array when no checks exist', async () => {
|
||||
ConditionCheckService.getConditionChecks.mockResolvedValue([]);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks/rental-456');
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
expect(response.body.conditionChecks).toHaveLength(0);
|
||||
});
|
||||
|
||||
it('should handle service errors', async () => {
|
||||
ConditionCheckService.getConditionChecks.mockRejectedValue(
|
||||
new Error('Database error')
|
||||
);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks/rental-123');
|
||||
|
||||
expect(response.status).toBe(500);
|
||||
expect(response.body.success).toBe(false);
|
||||
expect(response.body.error).toBe('Failed to fetch condition checks');
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /condition-checks/:rentalId/timeline', () => {
|
||||
it('should return condition check timeline', async () => {
|
||||
const mockTimeline = {
|
||||
rental: { id: 'rental-123', status: 'completed' },
|
||||
checks: [
|
||||
{ type: 'pre_rental', status: 'completed', completedAt: '2024-01-01' },
|
||||
{ type: 'post_rental', status: 'pending', completedAt: null },
|
||||
],
|
||||
};
|
||||
|
||||
ConditionCheckService.getConditionCheckTimeline.mockResolvedValue(mockTimeline);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks/rental-123/timeline');
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
expect(response.body.timeline).toMatchObject(mockTimeline);
|
||||
expect(ConditionCheckService.getConditionCheckTimeline).toHaveBeenCalledWith('rental-123');
|
||||
});
|
||||
|
||||
it('should handle service errors', async () => {
|
||||
ConditionCheckService.getConditionCheckTimeline.mockRejectedValue(
|
||||
new Error('Rental not found')
|
||||
);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks/rental-123/timeline');
|
||||
|
||||
expect(response.status).toBe(500);
|
||||
expect(response.body.success).toBe(false);
|
||||
expect(response.body.error).toBe('Rental not found');
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /condition-checks', () => {
|
||||
it('should return available checks for current user', async () => {
|
||||
it('should return available checks for specified rentals', async () => {
|
||||
const mockAvailableChecks = [
|
||||
{
|
||||
rentalId: 'rental-1',
|
||||
@@ -292,16 +201,16 @@ describe('Condition Check Routes', () => {
|
||||
ConditionCheckService.getAvailableChecks.mockResolvedValue(mockAvailableChecks);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks');
|
||||
.get('/condition-checks?rentalIds=rental-1,rental-2');
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
expect(response.body.availableChecks).toHaveLength(2);
|
||||
expect(response.body.availableChecks[0].itemName).toBe('Camera');
|
||||
expect(ConditionCheckService.getAvailableChecks).toHaveBeenCalledWith('user-123');
|
||||
expect(ConditionCheckService.getAvailableChecks).toHaveBeenCalledWith('user-123', ['rental-1', 'rental-2']);
|
||||
});
|
||||
|
||||
it('should return empty array when no checks available', async () => {
|
||||
it('should return empty array when no rentalIds provided', async () => {
|
||||
ConditionCheckService.getAvailableChecks.mockResolvedValue([]);
|
||||
|
||||
const response = await request(app)
|
||||
@@ -310,6 +219,7 @@ describe('Condition Check Routes', () => {
|
||||
expect(response.status).toBe(200);
|
||||
expect(response.body.success).toBe(true);
|
||||
expect(response.body.availableChecks).toHaveLength(0);
|
||||
expect(ConditionCheckService.getAvailableChecks).toHaveBeenCalledWith('user-123', []);
|
||||
});
|
||||
|
||||
it('should handle service errors', async () => {
|
||||
@@ -318,7 +228,7 @@ describe('Condition Check Routes', () => {
|
||||
);
|
||||
|
||||
const response = await request(app)
|
||||
.get('/condition-checks');
|
||||
.get('/condition-checks?rentalIds=rental-1');
|
||||
|
||||
expect(response.status).toBe(500);
|
||||
expect(response.body.success).toBe(false);
|
||||
|
||||
Reference in New Issue
Block a user