{"id":18474400,"url":"https://github.com/codecop/dependency-breaking-katas","last_synced_at":"2025-06-10T13:34:14.143Z","repository":{"id":79940987,"uuid":"158844611","full_name":"codecop/dependency-breaking-katas","owner":"codecop","description":"Exercises to practice breaking dependencies to test legacy code.","archived":false,"fork":false,"pushed_at":"2024-02-13T21:04:21.000Z","size":476,"stargazers_count":18,"open_issues_count":0,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T12:47:10.860Z","etag":null,"topics":["code-kata","dependency","exercise","kata","legacy","legacy-code","legacy-kata"],"latest_commit_sha":null,"homepage":"https://www.code-cop.org/presentations/refactoring/Working%20With%20Legacy%20Code%20(2024).pdf","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codecop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-23T14:45:02.000Z","updated_at":"2024-10-23T10:47:04.000Z","dependencies_parsed_at":"2023-10-04T06:03:24.074Z","dependency_job_id":"826757b1-ede0-48a8-a622-acfd484ac264","html_url":"https://github.com/codecop/dependency-breaking-katas","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2Fdependency-breaking-katas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2Fdependency-breaking-katas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2Fdependency-breaking-katas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2Fdependency-breaking-katas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codecop","download_url":"https://codeload.github.com/codecop/dependency-breaking-katas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2Fdependency-breaking-katas/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259085360,"owners_count":22803187,"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","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":["code-kata","dependency","exercise","kata","legacy","legacy-code","legacy-kata"],"created_at":"2024-11-06T10:29:21.546Z","updated_at":"2025-06-10T13:34:14.113Z","avatar_url":"https://github.com/codecop.png","language":"Java","readme":"# Dependency Breaking Katas\n\nExercises to practice breaking dependencies in legacy\ncode to create tests for it.\n\n## Goal\n\nWe have some legacy code. We need to make changes.\nTo make changes we need to introduce tests first.\nWe might have to change some code to enable testing.\nWe need to introduce so-called Seams (see [Michael\nFeathers' Working Effectively with Legacy\nCode](https://www.goodreads.com/book/show/44919.Working_Effectively_with_Legacy_Code)).\n\nChanging code without test is risky, so we want to\n\n* Only change as little code as possible.\n* Rely on automated Refactoring tools as much as possible.\n* You must not change the public API of the class.\n\n### Assignments for Techniques\n\n* Parametrise Constructor\n* Subclass And Override Method\n* Extract And Override Call\n* Replace Global Reference With Getter\n* Extract And Override Factory Method\n\nPlanned\n\n* Extract Interface\n* Adapt Parameter\n\n### Task\n\nEach task presents you with a class and some collaborators.\n\n* Bring this class under test. Make sure to cover all paths in the core logic.\n* There is an existing test class with a first test case which might or might not work.\n* You cannot change collaborators because they are used by other teams as well.\n\n### License\n\n[New BSD License](http://opensource.org/licenses/bsd-license.php), see `license.txt` in repository.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fdependency-breaking-katas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodecop%2Fdependency-breaking-katas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fdependency-breaking-katas/lists"}