{"id":23756893,"url":"https://github.com/tedyoung/expense-report-kata-ensemble","last_synced_at":"2025-03-15T11:14:43.249Z","repository":{"id":151361905,"uuid":"623197060","full_name":"tedyoung/expense-report-kata-ensemble","owner":"tedyoung","description":"Expense Report Kata for Ensembling","archived":false,"fork":false,"pushed_at":"2023-04-27T05:34:31.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-08T02:04:52.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/tedyoung.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-03T22:25:30.000Z","updated_at":"2023-04-03T22:25:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"19f68c1a-25ac-4f0e-a0e2-7839ca6cba12","html_url":"https://github.com/tedyoung/expense-report-kata-ensemble","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"tedyoung/expense-report-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedyoung%2Fexpense-report-kata-ensemble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedyoung%2Fexpense-report-kata-ensemble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedyoung%2Fexpense-report-kata-ensemble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedyoung%2Fexpense-report-kata-ensemble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tedyoung","download_url":"https://codeload.github.com/tedyoung/expense-report-kata-ensemble/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243719399,"owners_count":20336607,"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":[],"created_at":"2024-12-31T19:26:01.086Z","updated_at":"2025-03-15T11:14:43.229Z","avatar_url":"https://github.com/tedyoung.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Expense Report Kata\n\nThis is the Java-only version of the kata from https://github.com/christianhujer/expensereport.\nThe relevant parts of the README are below.\n\n## Changes I Made\n\nI've updated it to the latest JUnit, added the AssertJ assertion library, and bumped the Java version to 17.\nI also split the classes/enums into separate files and added a starter test method.\n\n----\n\n# ExpenseReport\n\nThe ExpenseReport legacy code refactoring kata in various languages.\n\nThis is an example of a piece of legacy code with lots of code smells.\nThe goal is to support the following new feature as best as you can:\n* Add Lunch with an expense limit of 2000.\n\n## Process\n1. 📚 Read the code to understand what it does and how it works.\n2. 🦨 Read the code and check for design and code smells. Make a list of all code and design smells that you find.\n3. 🧑‍🔬 Analyze what you would have to change to implement the new requirement without refactoring the code.\n4. 🧪 Write a characterization test. Expand your list of code and design smells. Add those smells that you missed earlier and discovered now because they made your life writing a test miserable.\n5. 🔧 Refactor the code.\n6. 🔧 Refactor the test.\n7. 👼 Test-drive the new feature.\n\n## Other plans\n- Make sure that all languages are providing the identical challenge.\n  To be practical, this will require the removal of the timestamp side-effect.\n- Provide the time-stamp side-effect on a separate branch.\n- Provide a test setup (without test) on a separate branch so that folks can choose whether they want to include the setup work in the kata or not.\n- Provide a level 2 challenge for creating an HTML report besides the Plain Text report.\n\n## Credits\nI first encountered the ExpenseReport example during a bootcamp at Equal Experts.\nI also have seen the ExpenseReport example being used by Robert \"Uncle Bob\" C. Martin.\nHowever, he seems to not be the original author (https://twitter.com/unclebobmartin/status/1537063143326855176?s=20\u0026t=lh_vVb9jUQmY6PYG50974w)\nI have tried to research its origins but so far I have failed.\nIf you know who has first come up with this example, please get in touch with me.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedyoung%2Fexpense-report-kata-ensemble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftedyoung%2Fexpense-report-kata-ensemble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedyoung%2Fexpense-report-kata-ensemble/lists"}