{"id":20645009,"url":"https://github.com/romanow/product-holder-test-report","last_synced_at":"2026-05-20T05:33:52.013Z","repository":{"id":194118271,"uuid":"690148985","full_name":"Romanow/product-holder-test-report","owner":"Romanow","description":"Report about testing with example of service Product Holder","archived":false,"fork":false,"pushed_at":"2023-09-14T09:06:19.000Z","size":543,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-29T18:57:16.336Z","etag":null,"topics":["spring-boot","spring-boot-test","testing"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Romanow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-11T16:13:57.000Z","updated_at":"2023-09-11T16:24:37.000Z","dependencies_parsed_at":"2023-09-11T23:59:35.929Z","dependency_job_id":"2d715110-58f4-4ade-9177-3901075c0038","html_url":"https://github.com/Romanow/product-holder-test-report","commit_stats":{"total_commits":8,"total_committers":2,"mean_commits":4.0,"dds":0.25,"last_synced_commit":"c7d6b2452dbc0a0ebeff82ae43b5fb1597bb0f42"},"previous_names":["romanow/product-holder-test-report"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Romanow/product-holder-test-report","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romanow%2Fproduct-holder-test-report","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romanow%2Fproduct-holder-test-report/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romanow%2Fproduct-holder-test-report/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romanow%2Fproduct-holder-test-report/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Romanow","download_url":"https://codeload.github.com/Romanow/product-holder-test-report/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Romanow%2Fproduct-holder-test-report/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270837424,"owners_count":24654379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["spring-boot","spring-boot-test","testing"],"created_at":"2024-11-16T16:18:23.673Z","updated_at":"2026-05-20T05:33:51.982Z","avatar_url":"https://github.com/Romanow.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Пирамида тестирования или зачем мы тратим столько времени впустую?\n\n[![Build project](https://github.com/Romanow/product-holder-test-report/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/Romanow/product-holder-test-report/actions/workflows/build.yml)\n\n## Задача\n\nПродемонстрировать на живом примере применение Пирамиды Тестирования (unit тесты, сервисные тесты, end-to-end тесты).\n\n## Описание\n\nНаписать сервис для загрузки продуктов из excel в формате:\n\n| Название продукта  | Цена  | Валюта |\n|--------------------|:-----:|:------:|\n| Mercedes GLA 250   | 45000 |  EUR   |\n| BMW X3             | 60000 |  EUR   |\n| Lego Technic 42260 |  179  |  USD   |\n\nИ сделать API для получения стоимости продукта на момент загрузки и на текущий момент:\n\n```http request\nPOST /api/v1/products\nContent-Type: multipart/form-data\n```\n\n```http request\nGET /api/v1/products/{name}?currency=RUB\nAccept: application/json\n```\n\n```json\n{\n  \"\u003cproduct-name\u003e\": \"Mercedes GLA 250\",\n  \"\u003cprice\u003e\": 4500000,\n  \"\u003cactual-price\u003e\": 4300000,\n  \"\u003ccurrency\u003e\": \"RUB\",\n  \"\u003ccreated-date\u003e\": \"11-09-2023\"\n}\n```\n\nСначала написать тесты на методы и на сервис, потом добавить реализацию. Курсы хранить в БД и брать актуальные с\nсайта [https://www.cbr-xml-daily.ru/latest.js](https://www.cbr-xml-daily.ru/latest.js) раз в 6 часов.\n\n## План\n\n1. Сначала брать курсы RUB, USD, EUR.\n2. Потом добавить CNY (китайский юань).\n3. Объяснить сколько времени потребовалось бы для повторного ручного тестирования.\n4. Объяснить сколько времени тратится на взаимодействие тестировщик – разработчик, почему для тестировщика сервис – это\n   черный ящик и как ему задавать тестовые данные.\n5. Продемонстрировать end-to-end тесты и автоматизированное покрытие.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanow%2Fproduct-holder-test-report","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromanow%2Fproduct-holder-test-report","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanow%2Fproduct-holder-test-report/lists"}