Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
b96db550
Commit
b96db550
authored
Mar 31, 2021
by
pburdette
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add more coverage
Add a bit more test coverage to ensure the button is tested properly.
parent
87ae36b1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
94 additions
and
59 deletions
+94
-59
changelogs/unreleased/pb-disable-trigger-manual-action.yml
changelogs/unreleased/pb-disable-trigger-manual-action.yml
+5
-0
spec/frontend/jobs/components/manual_variables_form_spec.js
spec/frontend/jobs/components/manual_variables_form_spec.js
+89
-59
No files found.
changelogs/unreleased/pb-disable-trigger-manual-action.yml
0 → 100644
View file @
b96db550
---
title
:
Disable trigger manual job button after click
merge_request
:
57885
author
:
type
:
fixed
spec/frontend/jobs/components/manual_variables_form_spec.js
View file @
b96db550
import
{
GlButton
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
,
createLocalVue
}
from
'
@vue/test-utils
'
;
import
{
createLocalVue
,
mount
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
Form
from
'
~/jobs/components/manual_variables_form.vue
'
;
const
localVue
=
createLocalVue
();
Vue
.
use
(
Vuex
);
describe
(
'
Manual Variables Form
'
,
()
=>
{
let
wrapper
;
let
store
;
const
requiredProps
=
{
action
:
{
...
...
@@ -16,19 +21,22 @@ describe('Manual Variables Form', () => {
variablesSettingsUrl
:
'
/settings
'
,
};
const
factory
=
(
props
=
{})
=>
{
wrapper
=
shallowMount
(
localVue
.
extend
(
Form
),
{
const
createComponent
=
(
props
=
{},
mountFn
=
shallowMount
)
=>
{
store
=
new
Vuex
.
Store
({
actions
:
{
triggerManualJob
:
jest
.
fn
(),
},
});
wrapper
=
mountFn
(
localVue
.
extend
(
Form
),
{
propsData
:
props
,
localVue
,
store
,
});
};
const
findTriggerBtn
=
()
=>
wrapper
.
find
(
'
[data-testid="trigger-manual-job-btn"]
'
);
beforeEach
(()
=>
{
factory
(
requiredProps
);
});
afterEach
((
done
)
=>
{
// The component has a `nextTick` callback after some events so we need
// to wait for those to finish before destroying.
...
...
@@ -40,70 +48,92 @@ describe('Manual Variables Form', () => {
});
});
it
(
'
renders empty form with correct placeholders
'
,
()
=>
{
expect
(
wrapper
.
find
({
ref
:
'
inputKey
'
}).
attributes
(
'
placeholder
'
)).
toBe
(
'
Input variable key
'
);
expect
(
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
attributes
(
'
placeholder
'
)).
toBe
(
'
Input variable value
'
,
);
});
describe
(
'
shallowMount
'
,
()
=>
{
beforeEach
(()
=>
{
createComponent
(
requiredProps
);
});
it
(
'
renders help text with provided link
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
p
'
).
text
()).
toBe
(
'
Specify variable values to be used in this run. The values specified in CI/CD settings will be used as default
'
,
);
it
(
'
renders empty form with correct placeholders
'
,
()
=>
{
expect
(
wrapper
.
find
({
ref
:
'
inputKey
'
}).
attributes
(
'
placeholder
'
)).
toBe
(
'
Input variable key
'
,
);
expect
(
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
attributes
(
'
placeholder
'
)).
toBe
(
'
Input variable value
'
,
);
});
expect
(
wrapper
.
find
(
'
a
'
).
attributes
(
'
href
'
)).
toBe
(
requiredProps
.
variablesSettingsUrl
);
});
it
(
'
renders help text with provided link
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
p
'
).
text
()).
toBe
(
'
Specify variable values to be used in this run. The values specified in CI/CD settings will be used as default
'
,
);
it
(
'
trigger button is not disabled on mount
'
,
()
=>
{
expect
(
findTriggerBtn
().
props
(
'
disabled
'
)).
toBe
(
false
);
});
expect
(
wrapper
.
find
(
'
a
'
).
attributes
(
'
href
'
)).
toBe
(
requiredProps
.
variablesSettingsUrl
);
});
describe
(
'
when adding a new variable
'
,
()
=>
{
it
(
'
creates a new variable when user types a new key and resets the form
'
,
(
done
)
=>
{
wrapper
.
vm
.
$nextTick
()
.
then
(()
=>
wrapper
.
find
({
ref
:
'
inputKey
'
}).
setValue
(
'
new key
'
))
.
then
(()
=>
{
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
1
);
expect
(
wrapper
.
vm
.
variables
[
0
].
key
).
toBe
(
'
new key
'
);
expect
(
wrapper
.
find
({
ref
:
'
inputKey
'
}).
attributes
(
'
value
'
)).
toBe
(
undefined
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
describe
(
'
when adding a new variable
'
,
()
=>
{
it
(
'
creates a new variable when user types a new key and resets the form
'
,
(
done
)
=>
{
wrapper
.
vm
.
$nextTick
()
.
then
(()
=>
wrapper
.
find
({
ref
:
'
inputKey
'
}).
setValue
(
'
new key
'
))
.
then
(()
=>
{
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
1
);
expect
(
wrapper
.
vm
.
variables
[
0
].
key
).
toBe
(
'
new key
'
);
expect
(
wrapper
.
find
({
ref
:
'
inputKey
'
}).
attributes
(
'
value
'
)).
toBe
(
undefined
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
it
(
'
creates a new variable when user types a new value and resets the form
'
,
(
done
)
=>
{
wrapper
.
vm
.
$nextTick
()
.
then
(()
=>
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
setValue
(
'
new value
'
))
.
then
(()
=>
{
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
1
);
expect
(
wrapper
.
vm
.
variables
[
0
].
secret_value
).
toBe
(
'
new value
'
);
expect
(
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
attributes
(
'
value
'
)).
toBe
(
undefined
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
it
(
'
creates a new variable when user types a new value and resets the form
'
,
(
done
)
=>
{
wrapper
.
vm
.
$nextTick
()
.
then
(()
=>
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
setValue
(
'
new value
'
))
.
then
(()
=>
{
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
1
);
expect
(
wrapper
.
vm
.
variables
[
0
].
secret_value
).
toBe
(
'
new value
'
);
expect
(
wrapper
.
find
({
ref
:
'
inputSecretValue
'
}).
attributes
(
'
value
'
)).
toBe
(
undefined
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
describe
(
'
when deleting a variable
'
,
()
=>
{
beforeEach
((
done
)
=>
{
wrapper
.
vm
.
variables
=
[
{
key
:
'
new key
'
,
secret_value
:
'
value
'
,
id
:
'
1
'
,
},
];
wrapper
.
vm
.
$nextTick
(
done
);
});
it
(
'
removes the variable row
'
,
()
=>
{
wrapper
.
find
(
GlButton
).
vm
.
$emit
(
'
click
'
);
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
0
);
});
});
});
describe
(
'
when deleting a variable
'
,
()
=>
{
beforeEach
((
done
)
=>
{
wrapper
.
vm
.
variables
=
[
{
key
:
'
new key
'
,
secret_value
:
'
value
'
,
id
:
'
1
'
,
},
];
wrapper
.
vm
.
$nextTick
(
done
);
describe
(
'
mount
'
,
()
=>
{
beforeEach
(()
=>
{
createComponent
(
requiredProps
,
mount
);
});
it
(
'
trigger button is not disabled on mount
'
,
()
=>
{
expect
(
findTriggerBtn
().
props
(
'
disabled
'
)).
toBe
(
false
);
});
it
(
'
removes the variable row
'
,
()
=>
{
wrapper
.
find
(
GlButton
).
vm
.
$emit
(
'
click
'
);
it
(
'
trigger button is disabled after trigger action
'
,
async
()
=>
{
expect
(
findTriggerBtn
().
props
(
'
disabled
'
)).
toBe
(
false
);
await
findTriggerBtn
().
trigger
(
'
click
'
);
expect
(
wrapper
.
vm
.
variables
.
length
).
toBe
(
0
);
expect
(
findTriggerBtn
().
props
(
'
disabled
'
)).
toBe
(
true
);
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment