import { expect, test } from 'vitest' import Adapter from '../src/adapter' const { convertObject, convertList } = Adapter const appBook = { "id": "fb5e7d1d-38cd-4831-bae9-07b36080e3e7", "createdAt": "2024-03-01T23:47:35.711668+03:00", "updatedAt": "2024-03-01T23:47:35.711668+03:00", "deletedAt": null, "owner": "e75aae0d-c1eb-4199-a1d8-2177f57d6a1e", "title": "Тестовая книга", "author": "Васильев А.В.", "description": "test description", "isPublic": false, "publication": null, "imageLink": null, "mapLink": null, "mapParamsId": null, "variables": [] } const apiBook = { "id": "fb5e7d1d-38cd-4831-bae9-07b36080e3e7", "created_at": "2024-03-01T23:47:35.711668+03:00", "updated_at": "2024-03-01T23:47:35.711668+03:00", "deleted_at": null, "owner": "e75aae0d-c1eb-4199-a1d8-2177f57d6a1e", "title": "Тестовая книга", "author": "Васильев А.В.", "description": "test description", "is_public": false, "publication": null, "image_link": null, "map_link": null, "map_params_id": null, "variables": [] } test('parse object from api', () => { const targetObject = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": true } const config = { id: "id", name: "name2", port: "port2", proxy_ip: "proxyIp", site_ip: "siteIp", internet_uri: "internetUri", description: "description", is_online: "isOnline", } const expectedObject = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxyIp: "172.25.78.153", siteIp: "172.25.78.36", internetUri: "localhost", description: "localhost", isOnline: true, } expect(convertObject(targetObject, {config})).toEqual(expectedObject) }) test('parse book object', () => { const targetObject = {...apiBook} const expectedObject = {...appBook} const config = { id: 'id', created_at: 'createdAt', updated_at: 'updatedAt', deleted_at: 'deletedAt', owner: 'owner', title: 'title', author: 'author', description: 'description', is_public: 'isPublic', publication: 'publication', image_link: 'imageLink', map_link: 'mapLink', map_params_id: 'mapParamsId', variables: 'variables' } const newObject = convertObject(targetObject, {config}) expect(newObject).toEqual(expectedObject) }) test('adapt list objects without callback', () => { const targetObject1 = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": true } const targetObject2 = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": true } const targetObject3 = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": true } const targetList = [targetObject1, targetObject2, targetObject3] const selfObject1 = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxy_ip: "172.25.78.153", site_ip: "172.25.78.36", internet_uri: "localhost", description: "localhost", is_online: true, } const selfObject2 = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxy_ip: "172.25.78.153", site_ip: "172.25.78.36", internet_uri: "localhost", description: "localhost", is_online: true, } const selfObject3 = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxy_ip: "172.25.78.153", site_ip: "172.25.78.36", internet_uri: "localhost", description: "localhost", is_online: true, } const selfList = [selfObject1, selfObject2, selfObject3] const config = { id: "id", name: "name2", port: "port2", proxy_ip: "proxy_ip", site_ip: "site_ip", internet_uri: "internet_uri", description: "description", is_online: "is_online", } expect(convertList(targetList, {config})).toEqual(selfList) }) test('adapt list objects with callback', () => { const targetObject1 = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": true } const targetObject2 = { "id": 1, "created_at": "2024-02-15T17:24:52.755254148+03:00", "updated_at": "2024-02-15T17:24:52.755254148+03:00", "deleted_at": null, "name": "jsonplaceholder.typicode.com", "port": 9965, "proxy_ip": "172.25.78.153", "site_ip": "172.25.78.36", "internet_uri": "localhost", "description": "localhost", "is_online": false } const targetList = [targetObject1, targetObject2] const expectedObject1 = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxy_ip: "172.25.78.153", site_ip: "172.25.78.36", internet_uri: "localhost", description: "localhost", state: "active", } const expectedObject2 = { id: 1, name2: "jsonplaceholder.typicode.com", port2: 9965, proxy_ip: "172.25.78.153", site_ip: "172.25.78.36", internet_uri: "localhost", description: "localhost", state: "disabled", } const expectedList = [expectedObject1, expectedObject2] const config = { id: "id", name: "name2", port: "port2", proxy_ip: "proxy_ip", site_ip: "site_ip", internet_uri: "internet_uri", description: "description", } const callback = (el, {is_online}) => ({...el, state: is_online ? "active": "disabled"}) expect(convertList(targetList, {config, callback})).toEqual(expectedList) })