{"id":15536156,"url":"https://github.com/kellyselden/ember-test-setup","last_synced_at":"2025-04-14T13:12:20.139Z","repository":{"id":39817646,"uuid":"128146091","full_name":"kellyselden/ember-test-setup","owner":"kellyselden","description":"Testing shorthands to reduce duplication","archived":false,"fork":false,"pushed_at":"2025-03-13T18:22:11.000Z","size":1687,"stargazers_count":6,"open_issues_count":17,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T02:21:28.728Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/kellyselden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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-04-05T01:42:20.000Z","updated_at":"2022-02-12T05:39:49.000Z","dependencies_parsed_at":"2023-02-17T12:31:15.515Z","dependency_job_id":"367176a6-e25d-4260-9265-03c837a72edf","html_url":"https://github.com/kellyselden/ember-test-setup","commit_stats":{"total_commits":167,"total_committers":5,"mean_commits":33.4,"dds":"0.37125748502994016","last_synced_commit":"d80a17f05b68a2d200ad27dde8d5fe5aad521206"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellyselden%2Fember-test-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellyselden%2Fember-test-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellyselden%2Fember-test-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kellyselden%2Fember-test-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kellyselden","download_url":"https://codeload.github.com/kellyselden/ember-test-setup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804803,"owners_count":21164134,"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-10-02T11:50:06.348Z","updated_at":"2025-04-14T13:12:19.934Z","avatar_url":"https://github.com/kellyselden.png","language":"JavaScript","funding_links":[],"categories":["Packages"],"sub_categories":["Testing"],"readme":"ember-test-setup\n==============================================================================\n\n[![npm version](https://badge.fury.io/js/ember-test-setup.svg)](https://badge.fury.io/js/ember-test-setup)\n[![Build Status](https://travis-ci.org/kellyselden/ember-test-setup.svg?branch=master)](https://travis-ci.org/kellyselden/ember-test-setup)\n\nTesting shorthands to reduce duplication\n\nMotivation\n------------------------------------------------------------------------------\n\nYou have many tests with duplicated render setup, templates, and post render code.\n\n```js\ntest('my test 1', async function(assert) {\n  this.setProperties({\n    foo: true,\n    bar: true\n  });\n\n  await render(hbs`\n    {{my-component\n      foo=foo\n      bar=bar\n    }}\n  `);\n\n  let label = document.querySelector('label');\n  let input = document.querySelector('input');\n\n  /// run tests\n});\n\ntest('my test 2', async function(assert) {\n  this.setProperties({\n    foo: true,\n    bar: true\n  });\n\n  await render(hbs`\n    {{my-component\n      foo=foo\n      bar=bar\n    }}\n  `);\n\n  let label = document.querySelector('label');\n  let input = document.querySelector('input');\n\n  /// run tests\n});\n\n// more tests\n```\n\nYou might try to make your own helpers to remove the duplication, but here is a standard solution.\n\n```js\nlet label, input;\n\nlet render = setupRender(hooks, {\n  beforeRender() {\n    this.setProperties({\n      foo: true,\n      bar: true\n    });\n  },\n  template: hbs`\n    {{my-component\n      foo=foo\n      bar=bar\n    }}\n  `,\n  afterRender() {\n    label = document.querySelector('label');\n    input = document.querySelector('input');\n  }\n});\n\ntest('my test 1', async function(assert) {\n  await render();\n\n  /// run assertions\n});\n\ntest('my test 2', async function(assert) {\n  await render();\n\n  /// run assertions\n});\n\n// more tests\n```\n\n\n\nCompatibility\n------------------------------------------------------------------------------\n\n* Ember.js v3.16 or above\n* Ember CLI v2.13 or above\n* Node.js v10 or above\n\n\nInstallation\n------------------------------------------------------------------------------\n\n```\nember install ember-test-setup\n```\n\n\nUsage\n------------------------------------------------------------------------------\n\nReplace\n\n```js\nimport { render } from '@ember/test-helpers';\n```\n\nwith\n\n```js\nimport { setupRender } from 'ember-test-setup';\n```\n\nThen add\n\n```js\nlet render = setupRender(hooks, {\n  beforeRender() {\n    // optional\n  },\n  template: hbs`\n    {{my-component\n      // ...\n    }}\n  `,\n  afterRender() {\n    // optional\n  }\n});\n```\n\nAnd finally replace all usages of\n\n```js\nawait render(hbs`\n  {{my-component\n    // ...\n  }}\n`);\n```\n\nwith\n\n```js\nawait render();\n```\n\nIt is possible to override the default template, useful for testing default values.\n\n```js\nawait render(hbs`{{my-component}}`);\n```\n\nYou can also do this for models and services.\n\n```js\nimport { setupModel, setupService } from 'ember-test-setup';\n\nsetupModel(hooks, {\n  beforeModel() {\n    // optional\n  },\n  model: 'my-model',\n  init: () =\u003e ({\n    // optional\n  }),\n  afterModel(model) {\n    // optional\n  }\n});\n\nsetupService(hooks, {\n  beforeService() {\n    // optional\n  },\n  service: 'my-service',\n  init: () =\u003e ({\n    // optional\n  }),\n  afterService(service) {\n    // optional\n  }\n});\n\nlet model = this.model({ /* optional */ });\nlet service = this.service({ /* optional */ });\n```\n\n\nContributing\n------------------------------------------------------------------------------\n\nSee the [Contributing](CONTRIBUTING.md) guide for details.\n\n\nLicense\n------------------------------------------------------------------------------\n\nThis project is licensed under the [MIT License](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellyselden%2Fember-test-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkellyselden%2Fember-test-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkellyselden%2Fember-test-setup/lists"}