def test_handles_node_grouped_in_separate_card(self, mock_Node): mock_Node.objects.get.side_effect = [self.grouping_node, self.string_node] self.grouping_node.get_direct_child_nodes = mock.Mock(return_value=[self.string_node]) self.string_tile.parenttile = self.grouping_tile self.test_resource.tiles.append(self.grouping_tile) self.test_resource.tiles.append(self.string_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.grouping_node.name: { NODE_ID_KEY: str(self.grouping_node.pk), TILE_ID_KEY: str(self.grouping_tile.pk), VALUE_KEY: NON_DATA_COLLECTING_NODE, self.string_node.name: { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(self.string_tile.pk), VALUE_KEY: self.string_tile.data[str(self.string_node.pk)], }, }, }, )
def to_json(self, compact=True, hide_empty_nodes=False, user=None, perm=None, version=None): """ Returns resource represented as disambiguated JSON graph Keyword Arguments: compact -- type bool: hide superfluous node data hide_empty_nodes -- type bool: hide nodes without data """ if version is None: return LabelBasedGraph.from_resource( resource=self, compact=compact, hide_empty_nodes=hide_empty_nodes, user=user, perm=perm) elif version == "beta": return LabelBasedGraphV2.from_resource( resource=self, compact=compact, hide_empty_nodes=hide_empty_nodes, user=user, perm=perm)
def test_generate_node_tile_reference(self): mock_tile = mock.Mock(data={self.node_1.node_id: "test_val"}) node_tile_reference = LabelBasedGraph.generate_node_tile_reference( resource=mock.Mock(tiles=[mock_tile])) self.assertEqual(mock_tile, node_tile_reference.get(self.node_1.node_id)[0])
def test_semantic_node_with_child(self, mock_Node): mock_Node.objects.get.return_value = self.grouping_node self.grouping_node.get_direct_child_nodes = mock.Mock(return_value=[self.string_node]) self.grouping_tile.data = {str(self.string_node.pk): "value_2"} self.test_resource.tiles.append(self.grouping_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.grouping_node.name: { NODE_ID_KEY: str(self.grouping_node.pk), TILE_ID_KEY: str(self.grouping_tile.pk), VALUE_KEY: NON_DATA_COLLECTING_NODE, self.string_node.name: { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(self.grouping_tile.pk), VALUE_KEY: self.grouping_tile.data[str(self.string_node.pk)], }, }, }, )
def test_handles_node_with_multiple_values(self, mock_Node): mock_Node.objects.get.return_value = self.string_node duplicate_node_tile = models.TileModel(data={str(self.string_node.pk): "value_2"}, nodegroup_id=str(self.string_node.pk)) self.test_resource.tiles.append(self.string_tile) self.test_resource.tiles.append(duplicate_node_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.string_node.name: [ { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(self.string_tile.pk), VALUE_KEY: self.string_tile.data[str(self.string_node.pk)], }, { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(duplicate_node_tile.pk), VALUE_KEY: duplicate_node_tile.data[str(self.string_node.pk)], }, ], }, )
def to_json(self, compact=True, hide_empty_nodes=False): """ Returns resource represented as disambiguated JSON graph Keyword Arguments: compact -- type bool: hide superfluous node data hide_empty_nodes -- type bool: hide nodes without data """ return LabelBasedGraph.from_resource(resource=self, compact=compact, hide_empty_nodes=hide_empty_nodes)
def to_json__bulk(resources, compact=True, hide_empty_nodes=False): """ Returns list of resources represented as disambiguated JSON graphs Keyword Arguments: resources -- list of Resource compact -- type bool: hide superfluous node data hide_empty_nodes -- type bool: hide nodes without data """ return LabelBasedGraph.from_resources(resources=resources, compact=compact, hide_empty_nodes=hide_empty_nodes)
def test_generate_node_ids_to_tiles_reference_and_nodegroup_cardinality_reference(self, mock_NodeGroup): mock_tile = mock.Mock(data={self.node_1.node_id: "test_val"}, nodegroup_id=self.node_1.node_id) mock_cardinality = "1" mock_NodeGroup.objects.filter.return_value.values.return_value = [ {"nodegroupid": mock_tile.nodegroup_id, "cardinality": mock_cardinality} ] ( node_ids_to_tiles_reference, nodegroup_cardinality_reference, ) = LabelBasedGraph.generate_node_ids_to_tiles_reference_and_nodegroup_cardinality_reference(resource=mock.Mock(tiles=[mock_tile])) self.assertEqual(mock_tile, node_ids_to_tiles_reference.get(self.node_1.node_id)[0]) self.assertEqual(nodegroup_cardinality_reference, {mock_tile.nodegroup_id: mock_cardinality})
def test_handles_empty_semantic_node(self, mock_Node): mock_Node.objects.get.return_value = self.grouping_node self.test_resource.tiles.append(self.grouping_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.grouping_node.name: { NODE_ID_KEY: str(self.grouping_node.pk), TILE_ID_KEY: str(self.grouping_tile.pk), VALUE_KEY: NON_DATA_COLLECTING_NODE, }, }, )
def test_handles_node_with_single_value(self, mock_Node): mock_Node.objects.get.return_value = self.string_node self.test_resource.tiles.append(self.string_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.string_node.name: { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(self.string_tile.pk), VALUE_KEY: self.string_tile.data[str(self.string_node.pk)], }, }, )
def test_handles_node_with_single_value(self, mock_Node, mock_NodeGroup): mock_Node.objects.get.return_value = self.string_node mock_NodeGroup.objects.filter.return_value.values.return_value = [ {"nodegroupid": self.string_tile.nodegroup_id, "cardinality": "1"} ] self.test_resource.tiles.append(self.string_tile) label_based_graph = LabelBasedGraph.from_resource(resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual( label_based_graph, { self.string_node.name: { NODE_ID_KEY: str(self.string_node.pk), TILE_ID_KEY: str(self.string_tile.pk), VALUE_KEY: self.string_tile.data[str(self.string_node.pk)], }, }, )
def test_smoke(self, mock_Node, mock_NodeGroup): label_based_graph = LabelBasedGraph.from_resource( resource=self.test_resource, compact=False, hide_empty_nodes=False) self.assertEqual(label_based_graph, {})
def test_from_tile(self, mock__build_graph): with mock.patch("arches.app.utils.label_based_graph.models.Node", return_value=None): LabelBasedGraph.from_tile(tile=mock.Mock(nodegroup_id=1), node_ids_to_tiles_reference=mock.Mock()) mock__build_graph.assert_called_once()