Beispiel #1
0
    def test_good_ajax_request(self):
        """
        Make sure that ajax request works correctly.
        """

        module_system = get_test_system()
        block = WordCloudBlock(module_system, DictFieldData(self.raw_field_data), Mock())

        post_data = MultiDict(('student_words[]', word) for word in ['cat', 'cat', 'dog', 'sun'])
        response = json.loads(block.handle_ajax('submit', post_data))
        assert response['status'] == 'success'
        assert response['submitted'] is True
        assert response['total_count'] == 22
        self.assertDictEqual(
            response['student_words'],
            {'sun': 1, 'dog': 6, 'cat': 12}
        )

        self.assertListEqual(
            response['top_words'],
            [{'text': 'cat', 'size': 12, 'percent': 55.0},
             {'text': 'dad', 'size': 2, 'percent': 9.0},
             {'text': 'dog', 'size': 6, 'percent': 27.0},
             {'text': 'mom', 'size': 1, 'percent': 5.0},
             {'text': 'sun', 'size': 1, 'percent': 4.0}]
        )

        assert 100.0 == sum((i['percent'] for i in response['top_words']))
Beispiel #2
0
    def test_indexibility(self):
        """
        Test indexibility of Word Cloud
        """

        module_system = get_test_system()
        block = WordCloudBlock(module_system, DictFieldData(self.raw_field_data), Mock())
        assert block.index_dictionary() ==\
               {'content_type': 'Word Cloud',
                'content': {'display_name': 'Word Cloud Block',
                            'instructions': 'Enter some random words that comes to your mind'}}
Beispiel #3
0
    def test_bad_ajax_request(self):
        """
        Make sure that answer for incorrect request is error json.
        """

        module_system = get_test_system()
        block = WordCloudBlock(module_system, DictFieldData(self.raw_field_data), Mock())

        response = json.loads(block.handle_ajax('bad_dispatch', {}))
        self.assertDictEqual(response, {
            'status': 'fail',
            'error': 'Unknown Command!'
        })
Beispiel #4
0
    def test_xml_import_export_cycle(self):
        """
        Test the import export cycle.
        """

        runtime = get_test_descriptor_system()
        runtime.export_fs = MemoryFS()

        original_xml = (
            '<word_cloud display_name="Favorite Fruits" display_student_percents="false" '
            'instructions="What are your favorite fruits?" num_inputs="3" num_top_words="100"/>\n'
        )

        olx_element = etree.fromstring(original_xml)
        id_generator = Mock()
        block = WordCloudBlock.parse_xml(olx_element, runtime, None,
                                         id_generator)
        block.location = BlockUsageLocator(
            CourseLocator('org', 'course', 'run', branch='revision'),
            'word_cloud', 'block_id')

        assert block.display_name == 'Favorite Fruits'
        assert not block.display_student_percents
        assert block.instructions == 'What are your favorite fruits?'
        assert block.num_inputs == 3
        assert block.num_top_words == 100

        node = etree.Element("unknown_root")
        # This will export the olx to a separate file.
        block.add_xml_to_node(node)
        with runtime.export_fs.open('word_cloud/block_id.xml') as f:
            exported_xml = f.read()

        assert exported_xml == original_xml