From 06c872c0644b14dcd2be581072b64d58c94bc64b Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 27 Jan 2010 08:24:36 +0000 Subject: [PATCH] SE-191 unit tests added SVN: 14475 --- .../web/server/RawDataSampleProvider.java | 11 +- .../web/server/RawDataSampleProviderTest.java | 221 ++++++++++++++++++ 2 files changed, 229 insertions(+), 3 deletions(-) create mode 100644 rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java index add9a918af4..5a0273e55c8 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProvider.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; +import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDataProvider; import ch.systemsx.cisd.openbis.generic.client.web.server.util.DataTypeUtils; @@ -47,6 +48,10 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.IRawDataServiceInterna */ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow> { + @Private static final String PARENT = "PARENT"; + @Private static final String REGISTRATION_DATE = "REGISTRATION_DATE"; + @Private static final String CODE = "CODE"; + private static final class Column { private final List<ISerializableComparable> values = new ArrayList<ISerializableComparable>(); @@ -191,9 +196,9 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow> private List<Column> getColumns() { List<Sample> samples = service.listRawDataSamples(sessionToken); - Column codeColumn = new Column(GenericTableColumnHeader.untitledLinkableStringHeader(0, "CODE")); - Column dateColumn = new Column(GenericTableColumnHeader.untitledStringHeader(1, "REGISTRATION_DATE")); - Column parentColumn = new Column(GenericTableColumnHeader.untitledStringHeader(2, "PARENT")); + Column codeColumn = new Column(GenericTableColumnHeader.untitledLinkableStringHeader(0, CODE)); + Column dateColumn = new Column(GenericTableColumnHeader.untitledStringHeader(1, REGISTRATION_DATE)); + Column parentColumn = new Column(GenericTableColumnHeader.untitledStringHeader(2, PARENT)); List<Column> columns = new ArrayList<Column>(); columns.add(codeColumn); columns.add(dateColumn); diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java new file mode 100644 index 00000000000..84c3cbea1cb --- /dev/null +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/server/RawDataSampleProviderTest.java @@ -0,0 +1,221 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server; + +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.CODE; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.PARENT; +import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.server.RawDataSampleProvider.REGISTRATION_DATE; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import org.jmock.Expectations; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import ch.rinn.restrictions.Friend; +import ch.systemsx.cisd.openbis.generic.shared.AbstractServerTestCase; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableColumnHeader; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableRow; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericValueEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; +import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.IRawDataServiceInternal; + +/** + * + * + * @author Franz-Josef Elmer + */ +@Friend(toClasses=RawDataSampleProvider.class) +public class RawDataSampleProviderTest extends AbstractServerTestCase +{ + private IRawDataServiceInternal service; + private RawDataSampleProvider provider; + + @Override + @BeforeMethod + public final void setUp() + { + super.setUp(); + service = context.mock(IRawDataServiceInternal.class); + provider = new RawDataSampleProvider(service, SESSION_TOKEN); + } + + @Test + public void testGetHeadersForNoData() + { + prepareListRawDataSamples(); + + List<GenericTableColumnHeader> headers = provider.getHeaders(); + + assertColumns(headers); + context.assertIsSatisfied(); + } + + @Test + public void testGetHeaders() + { + Sample ms1 = sample("MS1", sample("ABC", "alpha", "beta"), "one"); + Sample ms2 = sample("MS2", sample("DE", "gamma", "beta"), "one"); + Sample ms3 = sample("MS3", sample("DE", "gamma", "alpha"), "two"); + prepareListRawDataSamples(ms1, ms2, ms3); + + List<GenericTableColumnHeader> headers = provider.getHeaders(); + + assertColumns(headers, "one", "two", "alpha", "beta", "gamma"); + context.assertIsSatisfied(); + } + + @Test + public void testGetOriginalDataForNoData() + { + prepareListRawDataSamples(); + + List<GenericTableRow> data = provider.getOriginalData(); + + assertEquals(0, data.size()); + context.assertIsSatisfied(); + } + + @Test + public void testGetOriginalData() + { + Sample ms1 = sample("MS1", sample("ABC", "beta", "alpha"), "one"); + Sample ms2 = sample("MS2", sample("DE", "gamma", "beta"), "one"); + Sample ms3 = sample("MS3", sample("FG", "alpha", "gamma"), "2"); + prepareListRawDataSamples(ms1, ms2, ms3); + + List<GenericTableRow> data = provider.getOriginalData(); + + assertEquals(3, data.size()); + assertRow("MS1, Mon Mar 30 17:18:20 CET 1970, /G/ABC, null, 3.0, 6, 4, null", data.get(0)); + assertRow("MS2, Mon Mar 30 17:20:00 CET 1970, /G/DE, null, 3.0, null, 5, 5", data.get(1)); + assertRow("MS3, Mon Mar 30 17:21:40 CET 1970, /G/FG, 1, null, 5, null, 6", data.get(2)); + context.assertIsSatisfied(); + } + + private void assertRow(String expectedRow, GenericTableRow row) + { + StringBuilder builder = new StringBuilder(); + int length = expectedRow.split(",").length; + for (int i = 0; i < length; i++) + { + if (builder.length() > 0) + { + builder.append(", "); + } + builder.append(row.tryToGetValue(i)); + } + assertEquals(expectedRow, builder.toString()); + } + + private void assertColumns(List<GenericTableColumnHeader> headers, + String... expectedTitles) + { + assertFixedColumns(headers); + for (int i = 0; i < expectedTitles.length; i++) + { + assertPropertyHeader(expectedTitles[i], i + 3, headers); + } + assertEquals(expectedTitles.length + 3, headers.size()); + } + + private void assertFixedColumns(List<GenericTableColumnHeader> headers) + { + assertUntitledHeader(CODE, 0, true, DataTypeCode.VARCHAR, headers.get(0)); + assertUntitledHeader(REGISTRATION_DATE, 1, false, DataTypeCode.VARCHAR, headers.get(1)); + assertUntitledHeader(PARENT, 2, false, DataTypeCode.VARCHAR, headers.get(2)); + } + + private void assertUntitledHeader(String expectedCode, int expectedIndex, + boolean expectedlinkableFlag, DataTypeCode expectedType, GenericTableColumnHeader header) + { + assertHeader(expectedCode, expectedCode, expectedIndex, expectedlinkableFlag, expectedType, + header); + } + + private void assertPropertyHeader(String expectedLabel, int index, List<GenericTableColumnHeader> headers) + { + DataTypeCode type = DataTypeCode.values()[expectedLabel.length()]; + GenericTableColumnHeader header = headers.get(index); + assertHeader(expectedLabel, expectedLabel.toUpperCase(), index, false, type, header); + } + + private void assertHeader(String expectedTitle, String expectedCode, int expectedIndex, + boolean expectedlinkableFlag, DataTypeCode expectedType, GenericTableColumnHeader header) + { + assertEquals(expectedTitle, header.getTitle()); + assertEquals(expectedCode, header.getCode()); + assertEquals(expectedIndex, header.getIndex()); + assertEquals(expectedlinkableFlag, header.isLinkable()); + assertEquals(expectedType, header.getType()); + } + + private Sample sample(String code, Sample parent, String...properties) + { + Sample sample = sample(code, properties); + sample.setGeneratedFrom(parent); + return sample; + } + + private Sample sample(String code, String... properties) + { + Sample sample = new Sample(); + sample.setCode(code); + sample.setIdentifier("/G/" + code); + sample.setId((long) code.hashCode()); + sample.setRegistrationDate(new Date(code.hashCode() * 100000L)); + sample.setProperties(createProperties(properties)); + return sample; + } + + private List<IEntityProperty> createProperties(String... labels) + { + ArrayList<IEntityProperty> properties = new ArrayList<IEntityProperty>(); + for (String label : labels) + { + GenericValueEntityProperty property = new GenericValueEntityProperty(); + PropertyType propertyType = new PropertyType(); + propertyType.setLabel(label); + propertyType.setCode(propertyType.getLabel().toUpperCase()); + DataType dataType = new DataType(); + dataType.setCode(DataTypeCode.values()[label.length()]); + propertyType.setDataType(dataType); + property.setPropertyType(propertyType); + property.setValue(Integer.toString(label.length() + properties.size())); + properties.add(property); + } + return properties; + } + + private void prepareListRawDataSamples(final Sample... samples) + { + context.checking(new Expectations() + { + { + one(service).listRawDataSamples(SESSION_TOKEN); + will(returnValue(Arrays.asList(samples))); + } + }); + } +} -- GitLab