# Unit testing using ember-qunit controller action, accesses the store and methods

**URL:** <https://discuss.emberjs.com/t/unit-testing-using-ember-qunit-controller-action-accesses-the-store-and-methods/11591>\
**Category:** Testing\
**Created:** [September 18, 2016, 5:31pm UTC](https://discuss.emberjs.com/t/unit-testing-using-ember-qunit-controller-action-accesses-the-store-and-methods/11591 "2016-09-18T17:31:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![tahir182](https://avatars.discourse-cdn.com/v4/letter/t/2bfe46/32.png) [@tahir182](https://discuss.emberjs.com/u/tahir182)\
**Post date:** [September 18, 2016, 5:31pm UTC](https://discuss.emberjs.com/t/unit-testing-using-ember-qunit-controller-action-accesses-the-store-and-methods/11591/1 "2016-09-18T17:31:13Z")

</div>

I have built a small Ember App. It has a controller which has an action named changeStatus(id). This method access the store and try to change an attribute value. I am relatively new to Ember. I don’t know whether best way is to test it with Integration test or unit test? And how to test with either way.

Here is the sample code

**Controller: user.js**

```
import Ember from 'ember';
    
    export default Ember.Controller.extend({
      
      actions: {
        changeStatus(id) {
          const oUser = this.store.peekRecord('user', id),
          let bCurrentValue = oUser.get('active');
          if (bCurrentValue) {
            oUser.set('active', false);
          } else {
            oUser.set('active', true);
          }
            //oUser.save();
        },
      }
    });

```

**Model: user.js**

```
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
    
export default PatientIndexController;
    
    import Model from 'ember-data/model';
    import attr from 'ember-data/attr';
    
    export default Model.extend({
      active: attr('boolean'),
    });

```

**Unit Test: user-test.js**

```
import {moduleFor, test} from 'ember-qunit';
import Ember from 'ember';

moduleFor('controller:user', 'Unit | Controller | user', { });
test('Toggle user active status', function (assert) {
  const contollerUser = this.subject();
  contollerUser.send('changeStatus', 1);
  assert.equal(contollerUser.store.peekRecord('user', 1).get('active'), 'true or false');
  });

```

but I am not getting how to set some data to store. As when I call the function changeStatus() then it don’t know about user model.

How to set a proper test. Thanks in advance.

---

<div class="post-metadata">

**Author:** ![hnf1991](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/hnf1991/32/12643_2.png) [@hnf1991](https://discuss.emberjs.com/u/hnf1991)\
**Post date:** [October 13, 2016, 8:30pm UTC](https://discuss.emberjs.com/t/unit-testing-using-ember-qunit-controller-action-accesses-the-store-and-methods/11591/2 "2016-10-13T20:30:27Z")

</div>

U can provide a stub of store, something like this

```
let oUser = Ember.Object.create({active: true});
contollerUser.set('store', {
    peekRecord(modelName, id) {
        assert.equal(modelName, 'user');
        assert.equal(id, 1);
        //return some mocked object
        return oUser;
    }
});
contollerUser.send('changeStatus', 1);
assert.equal(oUser.get('active'), false);

```

Hope that makes sense.
