@kenniy/godeye-data-contracts
Version:
Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse
72 lines (71 loc) • 2.92 kB
JavaScript
;
/**
* Quick Validation Test - Backward Compatibility
*
* Simple test to validate that all changes are backward compatible
*/
Object.defineProperty(exports, "__esModule", { value: true });
const response_1 = require("../core/response");
describe("Quick Backward Compatibility Validation", () => {
it("should handle old pagination format and convert to new structure", () => {
// Test data in old format (what existing services might send)
const oldFormatData = {
data: [
{ id: "1", name: "John" },
{ id: "2", name: "Jane" },
],
pagination: {
total: 50,
page: 2,
limit: 10,
totalPages: 5,
hasNext: true,
hasPrev: true,
},
};
const response = response_1.ResponseFactory.success(oldFormatData);
// Verify it converts to new standardized format
expect(response.success).toBe(true);
expect(response.data.items).toEqual([
{ id: "1", name: "John" },
{ id: "2", name: "Jane" },
]);
expect(response.data.total).toBe(50);
expect(response.data.page).toBe(2);
expect(response.data.limit).toBe(10);
expect(response.data.totalPages).toBe(5);
expect(response.data.hasNext).toBe(true);
expect(response.data.hasPrev).toBe(true);
});
it("should handle new items format correctly", () => {
// Test data in new standardized format
const newFormatData = {
items: [{ id: "1", name: "Test" }],
total: 25,
page: 1,
limit: 5,
};
const response = response_1.ResponseFactory.success(newFormatData);
expect(response.success).toBe(true);
expect(response.data.items).toEqual([{ id: "1", name: "Test" }]);
expect(response.data.total).toBe(25);
expect(response.data.totalPages).toBe(5);
expect(response.data.hasNext).toBe(true);
expect(response.data.hasPrev).toBe(false);
});
it("should not modify non-paginated data", () => {
const simpleData = { id: "1", name: "Test User" };
const response = response_1.ResponseFactory.success(simpleData);
expect(response.success).toBe(true);
expect(response.data).toEqual(simpleData);
expect(response.data.items).toBeUndefined();
expect(response.data.total).toBeUndefined();
});
it("should maintain error response format", () => {
const errorResponse = response_1.ResponseFactory.error("Validation failed", "Invalid input", 400);
expect(errorResponse.success).toBe(false);
expect(errorResponse.error).toBe("Validation failed");
expect(errorResponse.message).toBe("Invalid input");
expect(errorResponse.status_code).toBe(400);
});
});