def test_build_with_inferred_schema(self):
        app = self.current_app

        schema = CaseExportDataSchema.generate_schema_from_builds(
            app.domain,
            app._id,
            self.case_type,
        )
        # Main table
        group_schema = schema.group_schemas[0]
        self.assertEqual(len(group_schema.items), 2)

        add_inferred_export_properties(
            'TestSend',
            app.domain,
            self.case_type,
            ['question2', 'new-property'],
        )

        schema = CaseExportDataSchema.generate_schema_from_builds(
            app.domain,
            app._id,
            self.case_type,
        )
        # Main table
        group_schema = schema.group_schemas[0]

        # Only the new property should be added. The repeated one should be merged
        self.assertEqual(len(group_schema.items), 3)
    def test_build_with_inferred_schema(self):
        app = self.current_app

        schema = CaseExportDataSchema.generate_schema_from_builds(
            app.domain,
            app._id,
            self.case_type,
        )
        # Main table
        group_schema = schema.group_schemas[0]
        self.assertEqual(len(group_schema.items), 2)

        add_inferred_export_properties(
            'TestSend',
            app.domain,
            self.case_type,
            ['question2', 'new-property'],
        )

        schema = CaseExportDataSchema.generate_schema_from_builds(
            app.domain,
            app._id,
            self.case_type,
        )
        # Main table
        group_schema = schema.group_schemas[0]

        # Only the new property should be added. The repeated one should be merged
        self.assertEqual(len(group_schema.items), 3)
Exemple #3
0
    def test_add_inferred_export_properties_saved_schema(self):
        props = set(['one', 'two'])
        props_two = set(['one', 'three'])
        add_inferred_export_properties(
            'TestSend',
            self.domain,
            self.case_type,
            props,
        )
        add_inferred_export_properties(
            'TestSend',
            self.domain,
            self.case_type,
            props_two,
        )

        schema = get_inferred_schema(self.domain, self.case_type)
        group_schema = schema.group_schemas[0]
        self.assertEqual(
            set(map(lambda item: item.path[0].name, group_schema.items)),
            set(['one', 'two', 'three']))
        self.assertTrue(
            all(
                map(lambda item: isinstance(item, ScalarItem),
                    group_schema.items)), )
 def _add_props(self, props, num_queries=3):
     with self.assertNumQueries(num_queries):
         add_inferred_export_properties(
             'TestSend',
             self.domain,
             self.case_type,
             props,
         )
Exemple #5
0
 def _add_props(self, props, num_queries=3):
     with self.assertNumQueries(num_queries):
         add_inferred_export_properties(
             'TestSend',
             self.domain,
             self.case_type,
             props,
         )
Exemple #6
0
    def test_add_inferred_export_properties(self):
        props = set(['one', 'two'])
        add_inferred_export_properties(
            'TestSend',
            self.domain,
            self.case_type,
            props,
        )

        schema = get_inferred_schema(self.domain, self.case_type)
        group_schema = schema.group_schemas[0]
        self.assertEqual(
            set(map(lambda item: item.path[0].name, group_schema.items)),
            props)
Exemple #7
0
 def test_add_inferred_export_properties_system(self):
     """
     Ensures that when we add a system property, it uses the system's item type
     """
     props = set(['closed'])
     add_inferred_export_properties(
         'TestSend',
         self.domain,
         self.case_type,
         props,
     )
     schema = get_inferred_schema(self.domain, self.case_type)
     group_schema = schema.group_schemas[0]
     self.assertEqual(len(group_schema.items), 1)
     self.assertEqual(group_schema.items[0].__class__, ExportItem)