Esempio n. 1
0
    def test_search_is_case_insensitive(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        first_pixel_set = models.PixelSet.objects.all().first()
        second_pixel_set = models.PixelSet.objects.all().last()

        # Add custom descriptions written in Klingon so that we are pretty
        # sure nothing will match our query 🤓
        #
        # Lorem ipsum source:
        # http://shooshee.tumblr.com/post/212964026/klingon-lorem-ipsum
        first_analysis = factories.AnalysisFactory(description=(
            'Qapla. Dah tlhingan hol mu ghom a dalegh. Qawhaqvam '
            'chenmohlu di wiqipe diya ohvad ponglu. Ach jinmolvamvad '
            'Saghbe law tlhingan hol, dis, oh mevmohlu.'))

        first_pixel_set.analysis = first_analysis
        first_pixel_set.save()

        experiment = factories.ExperimentFactory(description=(
            'Qapla. Dah tlhingan hol mu ghom a dalegh. Qawhaqvam '
            'chenmohlu di wiqipe diya ohvad ponglu. Ach jinmolvamvad '
            'Saghbe law tlhingan hol, dis, oh mevmohlu.'))
        second_analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])

        second_pixel_set.analysis = second_analysis
        second_pixel_set.save()

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=8)

        # filter with keyword search
        data = {'search': 'JINMOLVAMVAD'}
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=2)
Esempio n. 2
0
    def test_all_filters(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        # Create a special Pixel Set which will match all filters
        species = factories.SpeciesFactory()
        strain = factories.StrainFactory(species=species)
        omics_unit_type = factories.OmicsUnitTypeFactory()
        omics_unit = factories.OmicsUnitFactory(
            strain=strain,
            type=omics_unit_type,
        )
        omics_area = factories.OmicsAreaFactory()
        experiment = factories.ExperimentFactory(omics_area=omics_area)
        experiment_tag = 'candida'
        experiment.tags = experiment_tag
        experiment.save()
        analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])
        pixel_set = factories.PixelSetFactory(analysis=analysis)
        factories.PixelFactory(
            omics_unit=omics_unit,
            pixel_set=pixel_set,
        )

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=9)

        # all filters
        tag = models.Tag.objects.get(name=experiment_tag)
        data = {
            'species': [
                species.id,
            ],
            'omics_unit_types': [
                omics_unit_type.id,
            ],
            'omics_area': [
                omics_area.id,
            ],
            'tags': [
                tag.id,
            ],
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)
Esempio n. 3
0
    def test_tags_filter(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        omics_area = factories.OmicsAreaFactory()

        experiment = factories.ExperimentFactory(omics_area=omics_area)
        experiment_tag = 'candida'
        experiment.tags = experiment_tag
        experiment.save()

        analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])
        analysis_tag = 'msms/time'
        analysis.tags = analysis_tag
        analysis.save()
        factories.PixelSetFactory(analysis=analysis)

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=9)

        # tags filter
        tag = models.Tag.objects.get(name=experiment_tag)
        data = {
            'tags': [
                tag.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)

        tag = models.Tag.objects.get(name=analysis_tag)
        data = {
            'tags': [
                tag.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)
Esempio n. 4
0
    def test_omics_areas_filter(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        omics_area = factories.OmicsAreaFactory()
        experiment = factories.ExperimentFactory(omics_area=omics_area)
        analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])
        factories.PixelSetFactory(analysis=analysis)

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=9)

        # omics_areas filter
        data = {
            'omics_areas': [
                omics_area.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)
Esempio n. 5
0
    def test_search_filter_with_keywords(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        first_pixel_set = models.PixelSet.objects.all().first()
        second_pixel_set = models.PixelSet.objects.all().last()

        # Add custom descriptions written in Klingon so that we are pretty
        # sure nothing will match our query 🤓
        #
        # Lorem ipsum source:
        # http://shooshee.tumblr.com/post/212964026/klingon-lorem-ipsum
        first_analysis = factories.AnalysisFactory(description=(
            'Qapla. Dah tlhingan hol mu ghom a dalegh. Qawhaqvam '
            'chenmohlu di wiqipe diya ohvad ponglu. Ach jinmolvamvad '
            'Saghbe law tlhingan hol, dis, oh mevmohlu.'))

        first_pixel_set.analysis = first_analysis
        first_pixel_set.save()

        experiment = factories.ExperimentFactory(description=(
            'Qapla. Dah tlhingan hol mu ghom a dalegh. Qawhaqvam '
            'chenmohlu di wiqipe diya ohvad ponglu. Ach jinmolvamvad '
            'Saghbe law tlhingan hol, dis, oh mevmohlu.'))
        second_analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])

        second_pixel_set.analysis = second_analysis
        second_pixel_set.save()

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=8)

        # filter with keyword search
        data = {'search': 'jinmolvamvad'}
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=2)
        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{first_pixel_set.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(first_pixel_set.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )
        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{second_pixel_set.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(second_pixel_set.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )
Esempio n. 6
0
    def test_tags_tree_filter(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        # Create two pixelsets with tags
        omics_area = factories.OmicsAreaFactory()
        experiment = factories.ExperimentFactory(omics_area=omics_area)
        first_analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])
        first_analysis_tags = 'candida/glabrata/cbs138'
        first_analysis.tags = first_analysis_tags
        first_analysis.save()
        first_pixelset = factories.PixelSetFactory(analysis=first_analysis)
        second_analysis = factories.AnalysisFactory(experiments=[
            experiment,
        ])
        second_analysis_tags = 'candida'
        second_analysis.tags = second_analysis_tags
        second_analysis.save()
        second_pixelset = factories.PixelSetFactory(analysis=second_analysis)

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=10)

        # tags filter
        tag = models.Tag.objects.get(name=first_analysis_tags)
        data = {
            'tags': [
                tag.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)

        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{first_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(first_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )

        tag = models.Tag.objects.get(name=second_analysis_tags)
        data = {
            'tags': [
                tag.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=2)
        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{first_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(first_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )
        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{second_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(second_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )
Esempio n. 7
0
    def test_omics_areas_tree_filter(self):

        # Create 8 pixelset
        make_development_fixtures(n_pixel_sets=8, n_pixels_per_set=1)

        # Create a parent omics area and link it to a Pixel Set
        parent_omics_area = factories.OmicsAreaFactory()
        first_experiment = factories.ExperimentFactory(
            omics_area=parent_omics_area)
        first_analysis = factories.AnalysisFactory(experiments=[
            first_experiment,
        ])
        first_pixelset = factories.PixelSetFactory(analysis=first_analysis)

        # Create a child omics are and link it to a Pixel Set
        child_omics_area = factories.OmicsAreaFactory(parent=parent_omics_area)
        second_experiment = factories.ExperimentFactory(
            omics_area=child_omics_area)
        second_analysis = factories.AnalysisFactory(experiments=[
            second_experiment,
        ])
        second_pixelset = factories.PixelSetFactory(analysis=second_analysis)

        # no filter
        response = self.client.get(self.url)
        self.assertContains(response, '<tr class="pixelset">', count=10)

        # omics_areas filter
        data = {
            'omics_areas': [
                child_omics_area.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=1)

        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{second_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(second_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )

        data = {
            'omics_areas': [
                parent_omics_area.id,
            ]
        }
        response = self.client.get(self.url, data)
        self.assertContains(response, '<tr class="pixelset">', count=2)

        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{first_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(first_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )

        self.assertContains(
            response,
            ('<td class="filename">'
             '<a'
             f'  href="{second_pixelset.get_absolute_url()}"'
             '  title="More information about this Pixel Set"'
             '>'
             '<!-- Pixel Set file name -->'
             f'{filename(second_pixelset.pixels_file.name)}'
             '</a>'
             '</td>'),
            count=1,
            html=True,
        )