def test_should_raise_error_for_model_without_get_or_create_and_update(
         self):
     with self.assertRaises(AssertionError):
         OperationNode(Without_get_or_create, self.informer,
                       self.data_extractor, self.url_extractor,
                       self.data_sanitizer)
     with self.assertRaises(AssertionError):
         OperationNode(Without_update, self.informer, self.data_extractor,
                       self.url_extractor, self.data_sanitizer)
     with self.assertRaises(AssertionError):
         OperationNode(object, self.informer, self.data_extractor,
                       self.url_extractor, self.data_sanitizer)
 def test_execute_should_use_data_returned_by_data_extractor_to_create_and_update(
         self):
     model_class = Mock(spec=StubModel)
     model_instance = Mock(spec=StubModel)
     model_class.get_or_create.return_value = model_instance
     data_extractor = StubDataExtractor()
     node = OperationNode(model_class, self.informer, self.data_extractor,
                          self.url_extractor, self.data_sanitizer)
     data = {'some_data': {'url': 'http://localhost'}}
     node.execute(data)
     model_class.get_or_create.assert_called_with(username='******')
     model_instance.update.assert_called_with(email='*****@*****.**')
    def test_execute_should_create_relationship_with_parent(self):
        model_class = Mock(spec=StubModel)
        model_instance = Mock(spec=StubModel)
        model_class.get_or_create.return_value = model_instance
        model_instance.update.return_value = model_instance

        another_model = Mock(spec=StubModel)
        another_model_instance = Mock(spec=StubModel)
        another_model.get_or_create.return_value = another_model_instance
        another_model_instance.update.return_value = another_model_instance

        node = OperationNode(model_class, self.informer, self.data_extractor,
                             self.url_extractor, self.data_sanitizer)
        child = OperationNode(another_model, self.informer,
                              self.data_extractor, self.url_extractor,
                              self.data_sanitizer)
        child.has_relationship_with_parent('some_rel')
        node.add_child(child)
        data = {'some_data': {'url': 'http://localhost'}}
        self.informer.using.return_value = self.informer
        self.informer.get_data_from.return_value = user_test_data
        node.execute(data)
        model_instance.some_rel.assert_called_with(another_model_instance)
 def test_execute_should_call_execute_of_child_if_child_exists(self):
     model_class = Mock(spec=StubModel)
     model_instance = Mock(spec=StubModel)
     model_class.get_or_create.return_value = model_instance
     model_instance.update.return_value = model_instance
     node = OperationNode(model_class, self.informer, self.data_extractor,
                          self.url_extractor, self.data_sanitizer)
     next = Mock(spec=OperationNode)
     node.add_next(next)
     data = {'some_data': {'url': 'http://localhost'}}
     self.informer.using.return_value = self.informer
     self.informer.get_data_from.return_value = user_test_data
     node.execute(data)
     next.execute.assert_called_with()
 def setUp(self):
     self.informer = Mock(spec=Informer)
     self.data_extractor = Mock(spec=DataExtractor)
     self.data_extractor.extract_model_data_from.return_value = ({
         'username':
         '******'
     }, {
         'email':
         '*****@*****.**'
     })
     self.url_extractor = Mock(spec=UrlExtractor)
     self.data_sanitizer = Mock(spec=DataSanitizer)
     self.node = OperationNode(model=StubModel,
                               informer=self.informer,
                               data_extractor=self.data_extractor,
                               url_extractor=self.url_extractor,
                               data_sanitizer=self.data_sanitizer)
     self.stub = StubModel()
Beispiel #6
0
 def create_or_update(self,
                      model,
                      model_id_mapping,
                      model_data_mapping={},
                      default={},
                      using_processors={}):
     data_extractor = DataExtractor(model_id_mapping=model_id_mapping,
                                    model_data_mapping=model_data_mapping,
                                    default=default,
                                    using_processors=using_processors)
     node = OperationNode(model,
                          informer=self._informer,
                          data_extractor=data_extractor,
                          url_extractor=self._url_extractor,
                          data_sanitizer=self._data_sanitizer)
     if not self.root:
         self.root = node
     self.current = node
     self._informer = None
     self._data_sanitizer = None
     return self
 def test_add_next_should_add_next(self):
     next = OperationNode(StubModel, self.informer, self.data_extractor,
                          self.url_extractor, self.data_sanitizer)
     self.node.add_next(next)
     self.assertIsNotNone(self.node.next)
     self.assertEquals(next, self.node.next.end_node)
 def test_should_add_parent_to_child(self):
     child = OperationNode(StubModel, self.informer, self.data_extractor,
                           self.url_extractor, self.data_sanitizer)
     self.node.add_child(child)
     self.assertEquals(self.node, child.parent.end_node)
 def test_should_add_relationship_to_children_when_add_child_called(self):
     child = OperationNode(StubModel, self.informer, self.data_extractor,
                           self.url_extractor, self.data_sanitizer)
     self.node.add_child(child)
     self.assertTrue(self.node.children != [])
     self.assertEquals(child, self.node.children[0].end_node)
 def test_should_create_children_as_empty_array(self):
     self.assertTrue("children" in dir(
         OperationNode(StubModel, self.informer, self.data_extractor,
                       self.url_extractor, self.data_sanitizer)))