Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Signup flow #246

Closed
wants to merge 12 commits into from
1 change: 1 addition & 0 deletions app/components/form-input.hbs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<div class="field">
<label for={{@for}}>{{@label}}:</label>
<Input
data-test-id="form-input-{{@id}}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be a static named id, so that we can easily grab it in the tests.

Suggested change
data-test-id="form-input-{{@id}}"
data-test-id="form-input"

@id={{@id}}
@type={{@type}}
@value={{@value}}
Expand Down
2 changes: 2 additions & 0 deletions app/templates/signup.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
{{/each}}
{{#if this.isSubmitDisabled }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can achieve both the buttons with the if condition on the disabled attribute

<button
data-test-id='signup-button-disabled'
shreya-mishra marked this conversation as resolved.
Show resolved Hide resolved
class='submitButton disabledButton'
type="submit"
disabled={{true}}
Expand All @@ -55,6 +56,7 @@
</button>
{{else}}
<button
data-test-id='signup-button'
class='submitButton'
type="submit"
{{on 'click' (fn this.handleSubmit)}}
Expand Down
50 changes: 50 additions & 0 deletions tests/acceptance/signup-flow-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { module, test } from 'qunit';
import { visit, currentURL, fillIn } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';

module('Acceptance | signup flow', function(hooks) {

setupApplicationTest(hooks);

test('http://localhost:4200/signup', async function(assert) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think a more descriptive name test name will be good instead of http://localhost:4200/signup

const fields = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: We can move fields to mocks folder.

first_name:"test",
last_name:'user',
username:'test-user',
email:'[email protected]',
yoe:'0',
company:'rds',
designation:'demo',
linkedin_id:'demo@linkedin',
instagram_id:'demo@insta',
twitter_id:'demo@twitter',
website:'test.com'
}

const originalWindowAlert = window.alert;
window.alert = function() { return true;}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this?
(im not sure 100% honestly)

await visit('/signup');
assert.equal(currentURL(), '/signup');
assert.dom('[data-test-id="signup-button-disabled"]').exists()
assert.dom('[data-test-id="signup-button"]').doesNotExist()

for(let field in fields){

await fillIn(`[data-test-id="form-input-${field}"]`,fields[field])
}

assert.dom('[data-test-id="form-input-first_name"]').hasProperty('value','test')
assert.dom('[data-test-id="form-input-last_name"]').hasProperty('value','user')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hasProperty checks the properties of the selected HTML element, hasProperty is used to check let's say whether the input field is a type password or a normal input field etc.

To check the value of input hasValue is the assertion to use.


assert.dom('[data-test-id="signup-button-disabled"]').doesNotExist()
assert.dom('[data-test-id="signup-button"]').exists()

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can there also be something like clicking the button and then disabling it, and checking for the same?

await this.pauseTest()
window.alert = originalWindowAlert;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does the test have an alert? 🤔

What does this do for our assertions?


});
});