-
Notifications
You must be signed in to change notification settings - Fork 82
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
Fix string cucumber expression parameter completion #476
base: master
Are you sure you want to change the base?
Changes from 4 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -360,6 +360,8 @@ export default class StepsHandler { | |
res = res.replace(/\"\[\^\"\]\+\"/g, '""'); | ||
} | ||
|
||
// we can replace each ("|')${xx}\\1 by "${xx}" | ||
res = res.replace(/\(\"\|\'\)(\$\{.+?\})\\1/g, '"$1"'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe move this after the line 360 for consistency? Something like this is already replacing there. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. here it can handle smartSnippets or not ie: "${1:}" or "" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, I meant to just move this line up to add all the similar actions in one place There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. line 360 only concerns replacement when smartSnippets is set to false. |
||
return res; | ||
} | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -57,7 +57,7 @@ Feature: Formatting feature | |
"json": "text" | ||
} | ||
] | ||
|
||
""" | ||
|
||
|
||
@Other | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
this.When('I give 3/4 and 5$') | ||
this.When('I ask {string} and {string} to {word}') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the original issue related to the pure steps option enabled? Don't see There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nope it concerns both values of pureTextSteps There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If this action is not related to the |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -86,12 +86,12 @@ describe('geStepDefinitionMatch', () => { | |
}); | ||
|
||
describe('invalid lines', () => { | ||
const inbvalidStrings = [ | ||
const invalidStrings = [ | ||
`iGiven('I do something')`, | ||
`Giveni('I do something')`, | ||
`console.log("but i do 'Something'");` | ||
]; | ||
inbvalidStrings.forEach(str => { | ||
invalidStrings.forEach(str => { | ||
it(`should not parse "${str}" string`, () => { | ||
const match = s.geStepDefinitionMatch(str); | ||
expect(match).to.be.null; | ||
|
@@ -107,7 +107,7 @@ describe('geStepDefinitionMatch', () => { | |
}); | ||
|
||
describe('getStepInvariants', () => { | ||
it('should correctly handle or experssions', () => { | ||
it('should correctly handle or expressions', () => { | ||
const str = 'I do (a|b) and then I do (c|d|(?:e|f))'; | ||
const res = [ | ||
'I do a and then I do c', | ||
|
@@ -156,7 +156,7 @@ describe('getRegTextForStep', () => { | |
['I use {}', 'I use .*'], | ||
['I have 1 cucumber(s) in my belly', 'I have 1 cucumber(s)? in my belly'], | ||
['I have cucumbers in my belly/stomach', 'I have cucumbers in my (belly|stomach)'], | ||
['I use {word}', 'I use [A-Za-z]+'] | ||
['I use {word}', 'I use [^\\s]+'] | ||
]; | ||
data.forEach(d => { | ||
expect(s.getRegTextForStep(d[0])).to.be.equal(d[1]); | ||
|
@@ -275,22 +275,22 @@ describe('validate', () => { | |
it('should not check non-Gherkin steps', () => { | ||
expect(s.validate('Non_gherkin_word do something else', 1, '')).to.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with Given', () => { | ||
it('should return an diagnostic for lines beginning with Given', () => { | ||
expect(s.validate('Given I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with When', () => { | ||
it('should return an diagnostic for lines beginning with When', () => { | ||
expect(s.validate('When I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with Then', () => { | ||
it('should return an diagnostic for lines beginning with Then', () => { | ||
expect(s.validate('Then I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with And', () => { | ||
it('should return an diagnostic for lines beginning with And', () => { | ||
expect(s.validate('And I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with But', () => { | ||
it('should return an diagnostic for lines beginning with But', () => { | ||
expect(s.validate('But I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should return an diagnostic for lines beggining with *', () => { | ||
it('should return an diagnostic for lines beginning with *', () => { | ||
expect(s.validate('* I do something else', 1, '')).to.not.be.null; | ||
}); | ||
it('should correctly handle outline steps', () => { | ||
|
@@ -476,13 +476,20 @@ describe('step as a pure text test', () => { | |
const elements = customStepsHandler.getElements(); | ||
|
||
it('should properly handle steps', () => { | ||
expect(elements.length).to.be.eq(1); | ||
expect(elements.length).to.be.eq(2); | ||
expect(elements[0].text).to.be.eq('I give 3/4 and 5$'); | ||
expect(elements[1].text).to.be.eq('I ask {string} and {string} to {word}'); | ||
console.log(elements) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need this There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nope, i will fix that |
||
}); | ||
|
||
it('should return proper completion', () => { | ||
const completion = customStepsHandler.getCompletion('When I', 1, ''); | ||
expect(completion[0].insertText).to.be.eq('I give 3/4 and 5$'); | ||
const completion = customStepsHandler.getCompletion('When I g', 1, ''); | ||
expect(completion[0].insertText).to.be.eq('give 3/4 and 5$'); | ||
}) | ||
|
||
it('should return proper completion for string snippet', () => { | ||
const completion = customStepsHandler.getCompletion('When I ask ', 1, ''); | ||
expect(completion[0].insertText).to.be.eq('"${1:}" and "${2:}" to ${3:}'); | ||
}) | ||
|
||
it('should return proper partial completion', () => { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor, but this is not required, I'll add all the info during the release.