-
<%= h(StringUtilsLabKey.pluralize(run.getPeptideGroupCount(), peptideGroupLabel))%>,
- <% if (run.getPeptideCount() > 0) { %>
<%= h(StringUtilsLabKey.pluralize(run.getPeptideCount(), "peptide"))%>,<% } %>
- <% if (run.getSmallMoleculeCount() > 0) { %>
"><%= h(StringUtilsLabKey.pluralize(run.getSmallMoleculeCount(), "small molecule"))%>,<% } %>
+ <% if (run.getPeptideGroupCount() > 0) { %>
<%= h(StringUtilsLabKey.pluralize(run.getPeptideGroupCount(), "protein group"))%><%
+ if (run.getProteinCount() > 0) { %> (with
<%= h(StringUtilsLabKey.pluralize(run.getProteinCount(), "protein"))%>)<% } %>,
+ <% } %>
+ <% if (run.getMoleculeGroupCount() > 0) { %>
<%= h(StringUtilsLabKey.pluralize(run.getMoleculeGroupCount(), "molecule list"))%>,<% } %>
+ <% if (run.getPeptideCount() > 0) { %>
<%= h(StringUtilsLabKey.pluralize(run.getPeptideCount(), "peptide"))%>,<% } %>
+ <% if (run.getSmallMoleculeCount() > 0) { %>
<%= h(StringUtilsLabKey.pluralize(run.getSmallMoleculeCount(), "small molecule"))%>,<% } %>
<%= h(StringUtilsLabKey.pluralize(run.getPrecursorCount(), "precursor"))%>,
<%= h(StringUtilsLabKey.pluralize(run.getTransitionCount(), "transition"))%>
-
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSExperimentTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSExperimentTest.java
index 2f70382b3..6430a5336 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSExperimentTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSExperimentTest.java
@@ -90,6 +90,7 @@ public void testSteps() throws IOException, CommandException
verifyImportedSmallMoleculeData();
verifyAttributeGroupIdCalcs();
testRawFileLinks(SKY_FILE_SMALLMOL_PEP);
+ verifyRunDetailLinks();
// SKYD version 14
importData(SKY_FILE_SKYD_14, ++jobCount);
@@ -165,7 +166,7 @@ protected void verifyImportedPeptideData()
{
clickAndWait(Locator.linkContainingText("Panorama Dashboard"));
clickAndWait(Locator.linkContainingText(SKY_FILE));
- verifyRunSummaryCountsPep(24,44,0, 88,296, 1, 0, 0);
+ verifyRunSummaryCountsPep(24, 24, 44, 0, 88, 296, 1, 0, 0);
verifyDocumentDetails(false);
verifyPeptide();
}
@@ -175,7 +176,7 @@ protected void verifyImportedSmallMoleculeData()
{
clickAndWait(Locator.linkContainingText("Panorama Dashboard"));
clickAndWait(Locator.linkContainingText(SKY_FILE_SMALLMOL_PEP));
- verifyRunSummaryCountsSmallMol(27, 44, 98, 186, 394, 5, 0, 0); // Number of protein (groups), peptides, precursors, transitions, small molecules
+ verifyRunSummaryCountsMixed(24, 3, 24, 44, 98, 186, 394, 5, 0, 0);
verifyDocumentDetails(true);
verifyMolecule();
}
@@ -895,4 +896,54 @@ private void verifyNoGuestAccessMessage(boolean selfSignupEnabled)
assertFalse(fullBodyText.contains("Don't have an account? Register"));
}
}
+
+ @LogMethod
+ protected void verifyRunDetailLinks()
+ {
+ // From the runs listing (Panorama Dashboard), clicking a run's name navigates to the default
+ // run view. A mixed proteomics + small molecule document shows both precursor grids there.
+ // precursors_view is nested by protein group (24 total groups, 10 shown per page due to maxRows).
+ // getDataRowCount() returns outer rows + even-indexed expanded rows: 5+5+5=15 for 10 groups.
+ // small_mol_precursors_view has 3 molecule groups (all fit on one page): 2+1+2=5.
+ goToDashboard();
+ clickAndWait(Locator.linkContainingText(SKY_FILE_SMALLMOL_PEP));
+ DataRegionTable precursorsView = DataRegion(getDriver()).withName("precursors_view").find();
+ assertEquals(15, precursorsView.getDataRowCount());
+ DataRegionTable smallMolPrecursorsView = DataRegion(getDriver()).withName("small_mol_precursors_view").find();
+ assertEquals(5, smallMolPrecursorsView.getDataRowCount());
+
+ // Test each header link from runSummaryView.jsp while on the default run view.
+ // Each link must reach its own dedicated list page, not the combined precursor list.
+
+ // "24 protein groups" → protein group list: one row per peptide-bearing group
+ clickAndWait(Locator.linkContainingText("24 protein groups"));
+ DataRegionTable peptideGroupView = DataRegion(getDriver()).withName("PeptideGroup").find();
+ assertEquals(24, peptideGroupView.getDataRowCount());
+
+ // "3 molecule lists" → molecule group list: one row per molecule-bearing group
+ clickAndWait(Locator.linkContainingText("3 molecule lists"));
+ DataRegionTable moleculeGroupView = DataRegion(getDriver()).withName("MoleculeGroup").find();
+ assertEquals(3, moleculeGroupView.getDataRowCount());
+
+ // "44 peptides" → peptide list page: one row per peptide
+ clickAndWait(Locator.linkContainingText("44 peptides"));
+ DataRegionTable peptideView = DataRegion(getDriver()).withName("Peptide").find();
+ assertEquals(44, peptideView.getDataRowCount());
+
+ // "98 small molecules" → small molecule list page: one row per molecule
+ clickAndWait(Locator.linkContainingText("98 small molecules"));
+ DataRegionTable moleculeView = DataRegion(getDriver()).withName("Molecule").find();
+ assertEquals(98, moleculeView.getDataRowCount());
+
+ // Verify the runSummaryView.jsp header links also work when on a non-default run detail page.
+ // The header is embedded on every run detail view, not just the precursor list.
+ // From the small molecule list page, click "24 protein groups".
+ clickAndWait(Locator.linkContainingText("24 protein groups"));
+ peptideGroupView = DataRegion(getDriver()).withName("PeptideGroup").find();
+ assertEquals(24, peptideGroupView.getDataRowCount());
+ // From the protein group list page, click "44 peptides".
+ clickAndWait(Locator.linkContainingText("44 peptides"));
+ peptideView = DataRegion(getDriver()).withName("Peptide").find();
+ assertEquals(44, peptideView.getDataRowCount());
+ }
}
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSLibraryTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSLibraryTest.java
index ea4057fe6..0ede73415 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSLibraryTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSLibraryTest.java
@@ -29,6 +29,7 @@
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
+import java.util.stream.IntStream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -111,7 +112,7 @@ protected void verifyRevision1()
// Verify proteins in the library
// Proteins in SKY_FILE1: "CTCF", "TAF11", "MAX", "QPrEST_CystC_HPRR5000001", "HPRR1440042", "DifferentProteinSameLabel", "iRT-C18 Standard Peptides"
List
proteins = Arrays.asList("CTCF", "TAF11", "MAX", "QPrEST_CystC_HPRR5000001", "HPRR1440042", "DifferentProteinSameLabel", "iRT-C18 Standard Peptides");
- List files = new ArrayList();
+ List files = new ArrayList<>();
for (int i = 0; i < proteins.size(); i++)
{
files.add(SKY_FILE1); // All proteins are from the same file in version 1.
@@ -132,7 +133,9 @@ private void verifyLibraryProteins(List proteins, List files, in
int i = 0;
for(String protein: proteins)
{
- int idx = proteinsTable.getRowIndex("Label", protein);
+ int idx = IntStream.range(0, proteinsTable.getDataRowCount())
+ .filter(row -> protein.equals(proteinsTable.getDataAsText(row, "Label")))
+ .findFirst().orElse(-1);
assertTrue("Expected protein " + protein + " not found in table", idx != -1);
ListfileName = proteinsTable.getRowDataAsText(idx, "RunId/File");
assertEquals(1, fileName.size());
@@ -275,8 +278,8 @@ private void verifyAndResolveConflicts()
var proteinName = "MAX";
var oldProteinCb = getCheckBox(proteinName, true).waitForElement(shortWait());
var newProteinCb = getCheckBox(proteinName, false).waitForElement(shortWait());
- assertTrue(isChecked(newProteinCb)); // checkbox for the protein in the new document should be checked
- assertFalse(isChecked(oldProteinCb)); // checkbox for the protein in the old document should be unchecked
+ assertTrue(newProteinCb.isSelected()); // checkbox for the protein in the new document should be checked
+ assertFalse(oldProteinCb.isSelected()); // checkbox for the protein in the old document should be unchecked
// check, uncheck and check again (See Issue 44424)
changeChecked(oldProteinCb, newProteinCb , true, proteinName);
changeChecked(oldProteinCb, newProteinCb , false, proteinName);
@@ -290,13 +293,13 @@ private void changeChecked(WebElement oldProteinCb, WebElement newProteinCb, boo
setCheckbox(oldProteinCb, selectOld);
if (selectOld)
{
- assertFalse("Expected " + proteinName + " from the new document to be unchecked", isChecked(newProteinCb)); // new protein unchecked
- assertTrue("Expected " + proteinName + " from the old document to be checked", isChecked(oldProteinCb)); // old protein checked
+ assertFalse("Expected " + proteinName + " from the new document to be unchecked", newProteinCb.isSelected()); // new protein unchecked
+ assertTrue("Expected " + proteinName + " from the old document to be checked", oldProteinCb.isSelected()); // old protein checked
}
else
{
- assertTrue("Expected " + proteinName + " from the new document to be checked", isChecked(newProteinCb)); // new protein checked
- assertFalse("Expected " + proteinName + " from the old document to be unchecked", isChecked(oldProteinCb)); // old protein unchecked
+ assertTrue("Expected " + proteinName + " from the new document to be checked", newProteinCb.isSelected()); // new protein checked
+ assertFalse("Expected " + proteinName + " from the old document to be unchecked", oldProteinCb.isSelected()); // old protein unchecked
}
}
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSListTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSListTest.java
index 8ef5ee315..61c180dcd 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSListTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSListTest.java
@@ -53,13 +53,13 @@ public void testSteps() throws IOException, CommandException
clickAndWait(Locator.linkContainingText("Panorama Dashboard"));
clickAndWait(Locator.linkContainingText(LIST_SKY_FILE_1));
- verifyRunSummaryCountsPep(2,4,0, 5,53, 1, 0, 6);
+ verifyRunSummaryCountsPep(2, 2, 4, 0, 5, 53, 1, 0, 6);
clickAndWait(Locator.linkContainingText("6 lists"));
assertTextPresent("DocumentProperties", "Lorem Ipsum", "Protein Descriptions");
clickAndWait(Locator.linkContainingText("Protein Descriptions"));
// Check that the document header remains
- verifyRunSummaryCountsPep(2,4,0, 5,53, 1, 0, 6);
+ verifyRunSummaryCountsPep(2, 2, 4, 0, 5, 53, 1, 0, 6);
assertTextPresent("ALBU_BOVIN", "main protein of plasma");
List queryNames = validateSampleInfo(1, Set.of("Mickey"), 5, 12);
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSMAMTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSMAMTest.java
index 4b9beb6b1..5b8aa5fec 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSMAMTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSMAMTest.java
@@ -50,7 +50,7 @@ public void testSteps()
clickAndWait(Locator.linkContainingText("Panorama Dashboard"));
clickAndWait(Locator.linkContainingText(SKY_FILE));
- verifyRunSummaryCountsPep(125,158,0, 160,628, 1, 0, 0);
+ verifyRunSummaryCountsPep(125, 124, 158, 0, 160, 628, 1, 0, 0);
clickAndWait(Locator.linkContainingText("PTM Report"));
@@ -83,7 +83,7 @@ public void testCrossLinkedPeptideMap()
clickAndWait(Locator.linkContainingText("Panorama Dashboard"));
clickAndWait(Locator.linkContainingText(CROSS_LINKED_SKY_FILE));
- verifyRunSummaryCountsPep(2,2,0, 2,2, 1, 0, 0);
+ verifyRunSummaryCountsPep(2, 2, 2, 0, 2, 2, 1, 0, 0);
clickAndWait(Locator.linkContainingText("Peptide Map"));
assertTextPresentInThisOrder("121-124", "342-345", "142-145");
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSProteinGroupingTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSProteinGroupingTest.java
index dd285d028..f61286f6c 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSProteinGroupingTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSProteinGroupingTest.java
@@ -46,6 +46,7 @@ public void testProteinGrouping()
goToProjectHome();
clickAndWait(Locator.linkWithText(SKY_FILE));
+ verifyRunSummaryCountsPep(31, 47, 33, 0, 33, 198, 4, 0, 0);
clickAndWait(Locator.linkWithText(group));
log("Verifying protein matches for peptide");
diff --git a/test/src/org/labkey/test/tests/targetedms/TargetedMSTest.java b/test/src/org/labkey/test/tests/targetedms/TargetedMSTest.java
index 2b1bf0650..f60b1519f 100644
--- a/test/src/org/labkey/test/tests/targetedms/TargetedMSTest.java
+++ b/test/src/org/labkey/test/tests/targetedms/TargetedMSTest.java
@@ -19,6 +19,7 @@
import org.junit.BeforeClass;
import org.labkey.test.BaseWebDriverTest;
import org.labkey.test.Locator;
+import org.labkey.test.WebDriverWrapper;
import org.labkey.test.ModulePropertyValue;
import org.labkey.test.TestFileUtils;
import org.labkey.test.TestProperties;
@@ -37,9 +38,8 @@
import org.labkey.test.util.LoggedParam;
import org.labkey.test.util.ReflectionUtils;
import org.labkey.test.util.UIContainerHelper;
-import org.openqa.selenium.WebElement;
+import org.labkey.test.util.targetedms.TargetedMSHelper;
-import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
@@ -62,6 +62,7 @@ public abstract class TargetedMSTest extends BaseWebDriverTest
protected static final String SAMPLE_FILE_CHROM_INFO = "SampleFileChromInfo.sky.zip";
protected static final String USER = "qcuser@targetedms.test";
private static ConfiguresSite siteConfigurer;
+ protected final TargetedMSHelper _targetedMSHelper = new TargetedMSHelper(this);
protected enum SvgShapes
{
@@ -85,7 +86,7 @@ public enum FolderType {
Experiment
{
@Override
- public void chooseFolderType(TargetedMSTest test)
+ public void chooseFolderType(WebDriverWrapper test)
{
test.click(Locator.radioButtonById("experimentalData")); // click the first radio button - Experimental Data
}
@@ -93,21 +94,21 @@ public void chooseFolderType(TargetedMSTest test)
ExperimentMAM
{
@Override
- public void chooseFolderType(TargetedMSTest test)
+ public void chooseFolderType(WebDriverWrapper test)
{
test.click(Locator.radioButtonById("multiAttributeMethod")); // click the second radio button - Experimental Data
}
}, Library
{
@Override
- public void chooseFolderType(TargetedMSTest test)
+ public void chooseFolderType(WebDriverWrapper test)
{
test.click(Locator.radioButtonById("chromatogramLibrary")); // click the 3rd radio button - Library
}
}, LibraryProtein
{
@Override
- public void chooseFolderType(TargetedMSTest test)
+ public void chooseFolderType(WebDriverWrapper test)
{
test.click(Locator.radioButtonById("chromatogramLibrary")); // click the 3rd radio button - Library
test.click(Locator.checkboxByName("precursorNormalized")); // check the normalization checkbox.
@@ -115,13 +116,13 @@ public void chooseFolderType(TargetedMSTest test)
}, QC
{
@Override
- public void chooseFolderType(TargetedMSTest test)
+ public void chooseFolderType(WebDriverWrapper test)
{
test.click(Locator.radioButtonById("QC")); // click the 4th radio button - QC
}
};
- public abstract void chooseFolderType(TargetedMSTest test);
+ public abstract void chooseFolderType(WebDriverWrapper test);
}
public TargetedMSTest()
@@ -181,10 +182,7 @@ protected void setupFolder(FolderType folderType)
protected void setUpFolder(String folderName, FolderType folderType )
{
- _containerHelper.createProject(folderName, "Panorama");
- waitForElement(Locator.linkContainingText("Save"));
- clickAndWait(Locator.linkContainingText("Next"));
- selectFolderType(folderType);
+ _targetedMSHelper.setupFolder(folderName, folderType);
getSiteConfigurer().configureProject(getProjectName());
}
@@ -227,20 +225,7 @@ protected void importData(@LoggedParam String file, int jobCount, boolean expect
@LogMethod
protected void importData(@LoggedParam String file, int jobCount, boolean expectError, boolean doDbMaintenance)
{
- Locator.XPathLocator importButtonLoc = Locator.lkButton("Process and Import Data");
- WebElement importButton = importButtonLoc.findElementOrNull(getDriver());
- if (null == importButton)
- {
- goToModule("Pipeline");
- importButton = importButtonLoc.findElement(getDriver());
- }
- clickAndWait(importButton);
- String fileName = Paths.get(file).getFileName().toString();
- if (!_fileBrowserHelper.fileIsPresent(fileName))
- _fileBrowserHelper.uploadFile(TestFileUtils.getSampleData("TargetedMS/" + file));
- _fileBrowserHelper.importFile(fileName, "Import Skyline Results");
- waitForText("Skyline document import");
- waitForPipelineJobsToComplete(jobCount, file, expectError);
+ _targetedMSHelper.importData(file, jobCount, expectError);
if (doDbMaintenance)
{
@@ -273,22 +258,32 @@ private void runDbMaintenance()
}
}
- protected void verifyRunSummaryCountsSmallMol(int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount, int replicateCount, int calibrationCount, int listCount)
+ protected void verifyRunSummaryCountsSmallMol(int moleculeGroupCount, int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount, int replicateCount, int calibrationCount, int listCount)
+ {
+ verifyRunSummaryCounts(0, moleculeGroupCount, proteinCount, peptideCount, moleculeCount, precursorCount, transitionCount, replicateCount, calibrationCount, listCount);
+ }
+
+ protected void verifyRunSummaryCountsPep(int peptideGroupCount, int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount, int replicateCount, int calibrationCount, int listCount)
{
- verifyRunSummaryCounts(proteinCount, peptideCount, moleculeCount, precursorCount, transitionCount, replicateCount, calibrationCount, listCount, "molecule lists");
+ verifyRunSummaryCounts(peptideGroupCount, 0, proteinCount, peptideCount, moleculeCount, precursorCount, transitionCount, replicateCount, calibrationCount, listCount);
}
- protected void verifyRunSummaryCountsPep(int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount, int replicateCount, int calibrationCount, int listCount)
+ protected void verifyRunSummaryCountsMixed(int proteinGroupCount, int moleculeGroupCount, int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount, int replicateCount, int calibrationCount, int listCount)
{
- verifyRunSummaryCounts(proteinCount, peptideCount, moleculeCount, precursorCount, transitionCount, replicateCount, calibrationCount, listCount, "proteins");
+ verifyRunSummaryCounts(proteinGroupCount, moleculeGroupCount, proteinCount, peptideCount, moleculeCount, precursorCount, transitionCount, replicateCount, calibrationCount, listCount);
}
@LogMethod
- protected void verifyRunSummaryCounts(int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount,
- int replicateCount, int calibrationCount, int listCount, String peptideGroupLabel)
+ protected void verifyRunSummaryCounts(int proteinGroupCount, int moleculeGroupCount, int proteinCount, int peptideCount, int moleculeCount, int precursorCount, int transitionCount,
+ int replicateCount, int calibrationCount, int listCount)
{
log("Verifying expected summary counts");
- waitForElement(Locator.linkContainingText(proteinCount + " " + peptideGroupLabel));
+ if (proteinGroupCount > 0)
+ waitForElement(Locator.linkContainingText(proteinGroupCount + " protein group" + (proteinGroupCount == 1 ? "" : "s")));
+ if (moleculeGroupCount > 0)
+ assertElementPresent(Locator.linkContainingText(moleculeGroupCount + " molecule list" + (moleculeGroupCount == 1 ? "" : "s")));
+ if (proteinCount > 0)
+ assertElementPresent(Locator.linkContainingText(proteinCount + " protein" + (proteinCount == 1 ? "" : "s")));
if (peptideCount > 0)
{
assertElementPresent(Locator.linkContainingText(peptideCount + " peptides"));
@@ -327,9 +322,7 @@ protected void verifyRunSummaryCounts(int proteinCount, int peptideCount, int mo
@LogMethod
protected void selectFolderType(FolderType folderType) {
- log("Select Folder Type: " + folderType);
- folderType.chooseFolderType(this);
- clickButton("Finish");
+ _targetedMSHelper.selectFolderType(folderType);
}
/** Verify that the comparison plots have been AJAX'd into place */
diff --git a/test/src/org/labkey/test/tests/targetedms/upgrade/TargetedMSUpgradeTest.java b/test/src/org/labkey/test/tests/targetedms/upgrade/TargetedMSUpgradeTest.java
new file mode 100644
index 000000000..8220294af
--- /dev/null
+++ b/test/src/org/labkey/test/tests/targetedms/upgrade/TargetedMSUpgradeTest.java
@@ -0,0 +1,91 @@
+package org.labkey.test.tests.targetedms.upgrade;
+
+import org.junit.Assume;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.labkey.remoteapi.query.SelectRowsCommand;
+import org.labkey.remoteapi.query.SelectRowsResponse;
+import org.labkey.test.tests.targetedms.TargetedMSTest.FolderType;
+import org.labkey.test.tests.upgrade.BaseUpgradeTest;
+import org.labkey.test.util.UIContainerHelper;
+import org.labkey.test.util.targetedms.TargetedMSHelper;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Verifies that the targetedms-26.006-26.007 upgrade script correctly populates PeptideGroupCount,
+ * MoleculeGroupCount, and ProteinCount on existing runs after the schema migration.
+ */
+@Category({})
+public class TargetedMSUpgradeTest extends BaseUpgradeTest
+{
+ private static final String SKY_FILE = "smallmol_plus_peptides.sky.zip";
+
+ public TargetedMSUpgradeTest()
+ {
+ setContainerHelper(new UIContainerHelper(this));
+ }
+
+ @Override
+ protected String getProjectName()
+ {
+ return "TargetedMS Upgrade Test";
+ }
+
+ @Override
+ protected void doSetup() throws Exception
+ {
+ TargetedMSHelper helper = new TargetedMSHelper(this);
+ helper.setupFolder(getProjectName(), FolderType.Experiment);
+ helper.importData(SKY_FILE);
+ }
+
+ @Test
+ @EarliestVersion("25.11")
+ public void testPreUpgradeCounts() throws Exception
+ {
+ SelectRowsCommand cmd = new SelectRowsCommand("targetedms", "Runs");
+ cmd.setColumns(List.of("PeptideCount", "SmallMoleculeCount", "ReplicateCount"));
+ SelectRowsResponse response = cmd.execute(createDefaultConnection(), getProjectName());
+
+ List