npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ember-cli-autospy

v0.0.2

Published

Automatically generate spies for actions in component tests.

Downloads

2

Readme

Ember-cli-autospy

This plugin simplifies the testing of action handlers within component tests. It inspects test templates and extracts the action definitions, automatically creating a spy that will be called when the action fires.

Actions

Autospy will generate spies for each of the different action types.

Classic Actions

Say your component has the following action handler defined

  actions: {
    aClassicAction() {
      this.sendAction('myClassicAction');
    }
  }

To test this you'd setup something like the following. The withSpies call in this case will create a spy called mockedClassicAction which gets stored in the test context.

let template = hbs `{{some-component myClassicAction='mockedClassicAction'}}`;
withSpies(this, template);

Later in the test when the aClassicAction handler is triggered and the myClassicAction is sent the mockedClassicAction spy will be called and we can easily verify that our action logic fires as expected.

this.render(template);
// trigger the action handler on the component
assertActionCalled(this, assert, 'mockedClassicAction');

Closure actions

Autospy can create spies for closure actions just as easily. Say your component expects to be passed a closure action 'someClosureAction' which it will trigger at some stage via

this.attrs.someClosureAction();

withSpies can be used to generate a named spy mockedClosureAction to test this

let template = hbs `{{some-component someClosureAction=(action mockedClosureAction)}}`;
withSpies(this, template);
this.render(template);
// trigger the action and verify the result
assertActionCalled(this, assert, 'mockedClosureAction');
});

Actions with Parameters

Both action types can potentially be fired with parameters and the generated spies will be called with these params. The assertActionCalled takes an optional list of expected params which it will compare to the params the spy received.

  // in our component the following action is sent
  this.sendAction('someAction', 'foo', 'bar', 'baz');

  // in our test we can create spies as before,
  let template = hbs `{{some-component someAction='spyForSomeAction'}}`;
  withSpies(this, template);
   // trigger the action and verify
  assertActionCalled(this, assert, 'spyForSomeAction', 'foo', 'bar', 'baz');

Spycraft

Out of the box the plugin will create sinon spies, but withSpies accepts a spyfactory parameter which can be used to generate spies from your mocking/spy framework of choice.

  let customSpyFactory = () => new SpyFromMyFavoriteSpyFramework();
  ...
  withSpies(testContext, someTemplate, customSpyFactory);

Note assertActionCalled currently expects sinon mocks so if you use a custom factory you'll need to handle your own assertions. You can get access to the created spy at verification time using the getActionSpy call.

Installation

  • git clone this repository
  • npm install
  • bower install

Running

  • ember server
  • Visit your app at http://localhost:4200.

Running Tests

  • npm test (Runs ember try:testall to test your addon against multiple Ember versions)
  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit http://www.ember-cli.com/.