def test_measurement_with_neg_control_content_size_1(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')

        content = ContentIntent()
        num_neg_control = NamedIntegerValue(
            NamedLink(ip_constants.HEADER_NUMBER_OF_NEGATIVE_CONTROLS_VALUE),
            2)
        content.set_numbers_of_negative_controls([num_neg_control])
        measurement_intent.add_content(content)

        content_structure_request = [{
            dc_constants.NAME: {
                dc_constants.LABEL:
                ip_constants.HEADER_NUMBER_OF_NEGATIVE_CONTROLS_VALUE,
                dc_constants.SBH_URI: dc_constants.NO_PROGRAM_DICTIONARY
            },
            dc_constants.VALUE: 2
        }]
        self.assertDictEqual(
            {
                dc_constants.CONTENTS: [content_structure_request],
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE
            }, measurement_intent.to_structured_request())
    def test_measurement_with_strain_size_1(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')

        strain_name = NamedLink('and_00',
                                link='www.synbiohub.org/example/strain')
        strain = StrainIntent(strain_name)
        strain.set_strain_lab_name('my_lab')
        strain.set_strain_common_name('my_strain')
        measurement_intent.add_strain(strain)

        strain_structure_request = {
            dc_constants.SBH_URI: 'www.synbiohub.org/example/strain',
            dc_constants.LABEL: 'my_strain',
            dc_constants.LAB_ID: 'name.my_lab.and_00'
        }
        self.assertEqual(
            {
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.STRAINS: [strain_structure_request]
            }, measurement_intent.to_structured_request())
 def test_measurement_with_file_type_and_measurement_type(self):
     measurement_intent = MeasurementIntent()
     measurement_intent.set_measurement_type(
         ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
     measurement_intent.add_file_type('SPREADSHEET')
     self.assertEqual(
         {
             dc_constants.MEASUREMENT_TYPE:
             ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
             dc_constants.FILE_TYPE: ['SPREADSHEET']
         }, measurement_intent.to_structured_request())
 def test_measurement_with_ods_size_1(self):
     measurement_intent = MeasurementIntent()
     measurement_intent.set_measurement_type(
         ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
     measurement_intent.add_file_type('SPREADSHEET')
     measurement_intent.add_optical_density(3.0)
     self.assertEqual(
         {
             dc_constants.MEASUREMENT_TYPE:
             ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
             dc_constants.FILE_TYPE: ['SPREADSHEET'],
             dc_constants.ODS: [3.0]
         }, measurement_intent.to_structured_request())
 def test_measurement_with_replicate_size_1(self):
     measurement_intent = MeasurementIntent()
     measurement_intent.set_measurement_type(
         ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
     measurement_intent.add_file_type('SPREADSHEET')
     measurement_intent.add_replicate(5)
     self.assertEqual(
         {
             dc_constants.MEASUREMENT_TYPE:
             ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
             dc_constants.FILE_TYPE: ['SPREADSHEET'],
             dc_constants.REPLICATES: [5]
         }, measurement_intent.to_structured_request())
    def test_measurement_with_control_type(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')

        control = ControlIntent()
        control.set_control_type('HIGH_FITC')
        measurement_intent.add_control(control)

        control_structure_request = {dc_constants.TYPE: 'HIGH_FITC'}
        self.assertEqual(
            {
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.CONTROLS: [control_structure_request]
            }, measurement_intent.to_structured_request())
    def test_measurement_with_temperature_size_1(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')
        temperature = TemperatureIntent(75.0, 'fahrenheit')
        measurement_intent.add_temperature(temperature)

        temperature_structure_request = {
            dc_constants.VALUE: 75.0,
            dc_constants.UNIT: 'fahrenheit'
        }
        self.assertEqual(
            {
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.TEMPERATURES: [temperature_structure_request]
            }, measurement_intent.to_structured_request())
    def test_measurement_with_timepoint_size_1(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')

        timepoint = TimepointIntent(12.0, 'hour')
        measurement_intent.add_timepoint(timepoint)

        timepoint_structure_request = {
            dc_constants.VALUE: 12.0,
            dc_constants.UNIT: 'hour'
        }
        self.assertEqual(
            {
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.TIMEPOINTS: [timepoint_structure_request]
            }, measurement_intent.to_structured_request())
    def test_measurement_with_strain_size_2(self):
        measurement_intent = MeasurementIntent()
        measurement_intent.set_measurement_type(
            ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE)
        measurement_intent.add_file_type('SPREADSHEET')

        strain_value1 = NamedLink('and_00',
                                  link='www.synbiohub.org/example/and_strain')
        strain1 = StrainIntent(strain_value1)
        strain1.set_strain_lab_name('my_lab')
        strain1.set_strain_common_name('and_strain')
        measurement_intent.add_strain(strain1)

        strain_value2 = NamedLink('or_gate',
                                  link='www.synbiohub.org/example/or_strain')
        strain2 = StrainIntent(strain_value2)
        strain2.set_strain_lab_name('my_lab')
        strain2.set_strain_common_name('or_strain')
        measurement_intent.add_strain(strain2)

        strain_structure_request = [{
            dc_constants.SBH_URI: 'www.synbiohub.org/example/and_strain',
            dc_constants.LABEL: 'and_strain',
            dc_constants.LAB_ID: 'name.my_lab.and_00'
        }, {
            dc_constants.SBH_URI: 'www.synbiohub.org/example/or_strain',
            dc_constants.LABEL: 'or_strain',
            dc_constants.LAB_ID: 'name.my_lab.or_gate'
        }]
        self.assertEqual(
            {
                dc_constants.MEASUREMENT_TYPE:
                ip_constants.MEASUREMENT_TYPE_CONDITION_SPACE,
                dc_constants.FILE_TYPE: ['SPREADSHEET'],
                dc_constants.STRAINS: strain_structure_request
            }, measurement_intent.to_structured_request())
 def test_measurement_with_missing_measurement_type(self):
     measurement_intent = MeasurementIntent()
     measurement_intent.add_file_type('SPREADSHEET')
     with self.assertRaises(IntentParserException):
         measurement_intent.to_structured_request()