{"id":18003706,"url":"https://github.com/nkcoder/narooma","last_synced_at":"2025-04-04T09:41:18.227Z","repository":{"id":258165003,"uuid":"872688965","full_name":"nkcoder/narooma","owner":"nkcoder","description":"TDD by example with Scala","archived":false,"fork":false,"pushed_at":"2024-10-21T20:20:01.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T20:17:41.838Z","etag":null,"topics":["refactor","scala","tdd"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nkcoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-10-14T22:25:36.000Z","updated_at":"2024-10-21T20:20:05.000Z","dependencies_parsed_at":"2024-10-30T00:32:26.126Z","dependency_job_id":null,"html_url":"https://github.com/nkcoder/narooma","commit_stats":null,"previous_names":["nkcoder/narooma"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkcoder%2Fnarooma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkcoder%2Fnarooma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkcoder%2Fnarooma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nkcoder%2Fnarooma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nkcoder","download_url":"https://codeload.github.com/nkcoder/narooma/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247157047,"owners_count":20893202,"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":["refactor","scala","tdd"],"created_at":"2024-10-30T00:10:33.196Z","updated_at":"2025-04-04T09:41:18.201Z","avatar_url":"https://github.com/nkcoder.png","language":"Scala","readme":"This repo is to practice the book [Test Driven Development: By Example (Kent Beck)](https://www.amazon.com.au/Test-Driven-Development-Kent-Beck/dp/0321146530) in Scala.\n\n## How to run the tests\n\n```bash\nsbt test\n```\n\nWatch the tests:\n\n```bash\nsbt \nsbt\u003e ~test\n```\n\n## Quotes from the book\n\nThere are certainly programming tasks that can't be driven primarily by tests (or at least, not yet). Security software and concurrency, for example, are two topics where TDD has no obvious application. The ability to write concrete, deterministic, automated tests is a prerequisite for applying TDD.\n\nFor the vast majority of us in between, though, following these two simple rules can lead us to work much closer to our potential:\n- Always write a failing automated test before you write any code\n- Always remove duplication\n\nWe'll make a to-do list to remind us what all we need to do, keep us focused, and tell us when we are finished.\n\nWe don't start with objects, we start with tests.\n\nStart small or not at all.\n\n---\n\nThe TDD cycle is:\n1. Write a test\n2. Make it compile\n3. Make it run\n4. Remove duplication\n\nThe tests must be:\n- Easy to write for programmers\n- Easy to read for programmers\n- Quick to execute - If the tests don’t run fast, they won’t get run. If they don’t get run, they won’t be valuable. If they aren’t valuable, they won’t continue to be written.\n- Order independent\n- Deterministic\n- Piecemeal - We'd like to be able to write the tests a few at a time\n- Composable\n- Versionable \n- A prioi - We should be able to write the tests before they can possibly run\n- Automatic - The tests should run without human intervention\n- Helpful when thinking about design - Writing the tests a priori should be a learning experience\n\n## Todo List\n\n[Todo List History](./todo_list.md)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnkcoder%2Fnarooma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnkcoder%2Fnarooma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnkcoder%2Fnarooma/lists"}