Commit d7c9fca
Changed files (4)
spec/javascripts/controllers/sessions.spec.js
@@ -1,19 +1,34 @@
import SessionsController from '../../../app/javascript/controllers/sessions_controller'
+import { Application } from 'stimulus';
describe('SessionsController', () => {
- let subject = null;
-
beforeEach(() => {
- subject = new SessionsController();
- });
-
- it("is alive", () => {
- expect(subject).toEqual(jasmine.any(SessionsController));
+ let $form = affix('form[data-controller="sessions"]')
+ $form.affix('input[data-target="sessions.email" data-action="keyup->sessions#validate" type="email" id="user_email"]')
+ $form.affix('input[data-target="sessions.password" data-action="keyup->sessions#validate" type="password" id="user_password"]')
+ $form.affix('button[name="button" type="submit" data-target="sessions.submit"]')
+ const stimulusApp = Application.start();
+ stimulusApp.register('sessions', SessionsController);
});
describe("validate", () => {
- xit("disables the submit button when the email is blank", () => {
- subject.validate();
+ it("disables the submit button when the email is blank", () => {
+ $('#user_email').val('')
+ document.getElementById('user_email').dispatchEvent(new Event('keyup'))
+ expect($('button[type="submit"]').attr('disabled')).toBe('disabled')
+ });
+
+ it("disables the submit button when the password is blank", () => {
+ $('#user_password').val('');
+ document.getElementById('user_password').dispatchEvent(new Event('keyup'))
+ expect($('button[type="submit"]').attr('disabled')).toBe('disabled')
+ });
+
+ it ("enables the submit button when all fields are provided", () => {
+ $('#user_email').val('email@example.com');
+ $('#user_password').val('password');
+ document.getElementById('user_password').dispatchEvent(new Event('keyup'))
+ expect($('button[type="submit"]').attr('disabled')).toBe(undefined)
});
});
});
karma.conf.js
@@ -5,7 +5,11 @@ module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
- files: [ 'spec/javascripts/**/*.spec.js' ],
+ files: [
+ 'spec/javascripts/**/*.spec.js',
+ 'node_modules/jquery/dist/jquery.min.js',
+ 'node_modules/jasmine-fixture/dist/jasmine-fixture.min.js'
+ ],
exclude: [ ],
preprocessors: {
'app/javascript/packs/*.js': ['webpack', 'sourcemap'],
package.json
@@ -17,9 +17,11 @@
"babel-preset-env": "^1.6.1",
"jasmine": "^3.1.0",
"jasmine-core": "^3.1.0",
+ "jasmine-fixture": "^2.0.0",
"karma": "^2.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-jasmine": "^1.1.1",
+ "karma-jquery": "^0.2.2",
"karma-mocha-reporter": "^2.2.5",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^3.0.0",
yarn.lock
@@ -3695,6 +3695,10 @@ jasmine-core@^3.1.0, jasmine-core@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.1.0.tgz#a4785e135d5df65024dfc9224953df585bd2766c"
+jasmine-fixture@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/jasmine-fixture/-/jasmine-fixture-2.0.0.tgz#b6d0c5a3bb4834d23dd137464ef96f04f93bbd60"
+
jasmine@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.1.0.tgz#2bd59fd7ec6ec0e8acb64e09f45a68ed2ad1952a"
@@ -3814,6 +3818,10 @@ karma-jasmine@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529"
+karma-jquery@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/karma-jquery/-/karma-jquery-0.2.2.tgz#6bee93454d8b096bcc7815570a81e73fdddb5d6f"
+
karma-mocha-reporter@^2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560"