commit 78a17ce7d3cf1ab7439d190a133fc8247d406924
parent 5b8f066f78aa1d3af92041d0a025f4dd6ade39ee
Author: Asher Morgan <59518073+ashermorgan@users.noreply.github.com>
Date: Fri, 21 Jun 2024 14:02:10 -0700
Automatically start editing new target sets
Diffstat:
8 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/src/components/TargetEditor.vue b/src/components/TargetEditor.vue
@@ -61,7 +61,7 @@
<tr v-if="internalValue.targets.length === 0" class="empty-message">
<td colspan="2">
- There aren't any targets in this set yet
+ There aren't any targets in this set yet.
</td>
</tr>
</tbody>
@@ -204,7 +204,7 @@ function removeTarget(index) {
.target-editor th .icon {
margin-left: 0.3em;
}
-.target-editor tbody td:first-child {
+.target-editor tbody td:first-child::not(.empty-message) {
display: flex;
gap: 0.2em;
flex-wrap: wrap;
diff --git a/src/components/TargetSetSelector.vue b/src/components/TargetSetSelector.vue
@@ -7,7 +7,7 @@
<option value="_new">[ Create New Target Set ]</option>
</select>
- <button class="icon" title="Edit target set" @click="dialogElement.showModal()">
+ <button class="icon" title="Edit target set" @click="editTargetSet()">
<vue-feather type="edit" aria-hidden="true"/>
</button>
@@ -88,6 +88,16 @@ const internalValue = computed({
});
/**
+ * Open TargetEditor for the current target set
+ */
+function editTargetSet() {
+ if (dialogElement.value && dialogElement.value.showModal) {
+ // Missing in test environments, but is difficult to mock because it may be referenced on mount
+ dialogElement.value.showModal();
+ }
+}
+
+/**
* Create and select a new target
*/
function newTargetSet() {
@@ -97,6 +107,7 @@ function newTargetSet() {
targets: [],
};
model.value = key;
+ editTargetSet();
}
/**
diff --git a/tests/e2e/cross-calculator.spec.js b/tests/e2e/cross-calculator.spec.js
@@ -15,11 +15,11 @@ test('Save and update state when navigating between calculators', async ({ page
// Create custom target set
await page.getByText('Advanced Options').click();
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
- await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
- await expect(page.getByRole('row')).toHaveCount(2);
+ await expect(page.getByRole('row').nth(4)).toHaveText('There aren\'t any targets in this set yet.');
+ await expect(page.getByRole('row')).toHaveCount(5);
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
+ await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('800m Splits');
await page.getByRole('button', { name: 'Add distance target' }).click();
diff --git a/tests/e2e/pace-calculator.spec.js b/tests/e2e/pace-calculator.spec.js
@@ -65,11 +65,11 @@ test('Customize target sets', async ({ page }) => {
// Create custom target set
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
- await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
- await expect(page.getByRole('row')).toHaveCount(2);
+ await expect(page.getByRole('row').nth(4)).toHaveText('There aren\'t any targets in this set yet.');
+ await expect(page.getByRole('row')).toHaveCount(5);
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
+ await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('800m Splits');
await page.getByRole('button', { name: 'Add distance target' }).click();
@@ -141,7 +141,6 @@ test('Save settings across page reloads', async ({ page }) => {
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('Less-common Pace Targets');
await page.getByRole('button', { name: 'Add distance target' }).click();
diff --git a/tests/e2e/race-calculator.spec.js b/tests/e2e/race-calculator.spec.js
@@ -83,11 +83,11 @@ test('Customize target sets', async ({ page }) => {
// Create custom target set
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
- await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
- await expect(page.getByRole('row')).toHaveCount(2);
+ await expect(page.getByRole('row').nth(4)).toHaveText('There aren\'t any targets in this set yet.');
+ await expect(page.getByRole('row')).toHaveCount(5);
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
+ await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('XC Race Targets');
await page.getByRole('button', { name: 'Add distance target' }).click();
@@ -160,7 +160,6 @@ test('Save settings across page reloads', async ({ page }) => {
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('Less-common Race Targets');
await page.getByRole('button', { name: 'Add distance target' }).click();
diff --git a/tests/e2e/split-calculator.spec.js b/tests/e2e/split-calculator.spec.js
@@ -88,11 +88,11 @@ test('Customize target sets', async ({ page }) => {
// Create custom target set
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
- await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
- await expect(page.getByRole('row')).toHaveCount(2);
+ await expect(page.getByRole('row').nth(4)).toHaveText('There aren\'t any targets in this set yet.');
+ await expect(page.getByRole('row')).toHaveCount(5);
- // Edit custom target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
+ // Edit new target set
+ await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('800m Splits');
await page.getByRole('button', { name: 'Add distance target' }).click();
@@ -134,7 +134,6 @@ test('Save settings and state across page reloads', async ({ page }) => {
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('800m Splits');
await page.getByRole('button', { name: 'Add distance target' }).click();
diff --git a/tests/e2e/workout-calculator.spec.js b/tests/e2e/workout-calculator.spec.js
@@ -74,11 +74,11 @@ test('Customize target sets', async ({ page }) => {
// Create custom target set
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
- await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
- await expect(page.getByRole('row')).toHaveCount(2);
+ await expect(page.getByRole('row').nth(4)).toHaveText('There aren\'t any targets in this set yet.');
+ await expect(page.getByRole('row')).toHaveCount(5);
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
+ await expect(page.getByRole('row').nth(1)).toHaveText('There aren\'t any targets in this set yet.');
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('Workout Target Set #2');
await page.getByRole('button', { name: 'Add distance target' }).click();
@@ -155,7 +155,6 @@ test('Save settings across page reloads', async ({ page }) => {
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
// Edit new target set
- await page.getByRole('button', { name: 'Edit target set' }).click();
await expect(page.getByLabel('Target set label')).toHaveValue('New target set');
await page.getByLabel('Target set label').fill('Workout Target Set #2');
await page.getByRole('button', { name: 'Add distance target' }).click();
diff --git a/tests/unit/components/TargetEditor.spec.js b/tests/unit/components/TargetEditor.spec.js
@@ -618,6 +618,6 @@ test('should display message when target set is empty', async () => {
// Assert message correctly rendered
const rows = wrapper.findAll('tbody tr');
- expect(rows[0].text()).to.equal('There aren\'t any targets in this set yet');
+ expect(rows[0].text()).to.equal('There aren\'t any targets in this set yet.');
expect(rows.length).to.equal(1);
});