import Service from 'ember-service'; import hbs from 'htmlbars-inline-precompile'; import {describe, it} from 'mocha'; import {expect} from 'chai'; import {setupComponentTest} from 'ember-mocha'; const featureStub = Service.extend({ testFlag: true }); describe('Integration: Component: gh-feature-flag', function() { setupComponentTest('gh-feature-flag', { integration: true }); beforeEach(function () { this.register('service:feature', featureStub); this.inject.service('feature', {as: 'feature'}); }); it('renders properties correctly', function () { this.render(hbs`{{gh-feature-flag "testFlag"}}`); expect(this.$()).to.have.length(1); expect(this.$('label').attr('for')).to.equal(this.$('input[type="checkbox"]').attr('id')); }); it('renders correctly when flag is set to true', function () { this.render(hbs`{{gh-feature-flag "testFlag"}}`); expect(this.$()).to.have.length(1); expect(this.$('label input[type="checkbox"]').prop('checked')).to.be.true; }); it('renders correctly when flag is set to false', function () { this.set('feature.testFlag', false); this.render(hbs`{{gh-feature-flag "testFlag"}}`); expect(this.$()).to.have.length(1); expect(this.$('label input[type="checkbox"]').prop('checked')).to.be.false; }); it('updates to reflect changes in flag property', function () { this.render(hbs`{{gh-feature-flag "testFlag"}}`); expect(this.$()).to.have.length(1); expect(this.$('label input[type="checkbox"]').prop('checked')).to.be.true; this.$('label').click(); expect(this.$('label input[type="checkbox"]').prop('checked')).to.be.false; }); });