def test_get_from_json(self): test_object: dict = ToDoItem.new_item_as_dict( "Testing static constructor method") collection = MongoClient().db.collection collection.insert_one(test_object) returned_object = collection.find_one( {'title': 'Testing static constructor method'}) object_to_test: ToDoItem = ToDoItem.from_json(returned_object) assert isinstance(object_to_test.item_id, str) assert "Testing static constructor method" == object_to_test.title assert "To Do" == object_to_test.status assert isinstance(object_to_test.last_modified, datetime)
class TestRedirectManager(SimpleTestCase): """ Test the RedirectRecord model. """ redirect_one = { "redirect_path": "hello/world.fish/and.chips", "target_url": "https://example.com/something", } redirect_two = { "permanent": False, "redirect_path": "what-now", "target_url": "/something-else", } redirect_three = { "permanent": True, "redirect_path": "third-redirect", "target_url": "/third-target", } collection = None def _get_manager(self): """ A provisioned mock collection for testing """ self.collection = MongoClient().db.collection self.collection.insert(copy(self.redirect_one)) self.collection.insert(copy(self.redirect_two)) self.collection.insert(copy(self.redirect_three)) return RedirectManager(self.collection) def test_exists(self): manager = self._get_manager() response_one = manager.exists( redirect_path=self.redirect_one["redirect_path"] ) response_two = manager.exists( redirect_path=self.redirect_two["redirect_path"] ) response_three = manager.exists( redirect_path=self.redirect_three["redirect_path"] ) response_four = manager.exists("non-existent") self.assertTrue(response_one) self.assertTrue(response_two) self.assertTrue(response_three) self.assertFalse(response_four) def test_fetch(self): manager = self._get_manager() response_one = manager.fetch(self.redirect_one["redirect_path"]) response_two = manager.fetch(self.redirect_two["redirect_path"]) response_three = manager.fetch(self.redirect_three["redirect_path"]) response_four = manager.fetch("some/other/path") expected_one = self.redirect_one expected_one["permanent"] = False self.assertEqual(response_one, expected_one) self.assertEqual(response_two, self.redirect_two) self.assertEqual(response_three, self.redirect_three) self.assertIsNone(response_four) def test_create(self): manager = self._get_manager() new_redirect = { "redirect_path": "new/redirect", "target_url": "http://example.com/some_path", } response_new = manager.update( redirect_path=new_redirect["redirect_path"], target_url=new_redirect["target_url"], ) new_record = self.collection.find_one(new_redirect) new_redirect["permanent"] = False self.assertEqual(response_new, new_redirect) self.assertEqual( new_record["redirect_path"], new_redirect["redirect_path"] ) self.assertEqual(new_record["target_url"], new_record["target_url"]) def test_update(self): manager = self._get_manager() new_redirect = { "redirect_path": self.redirect_three["redirect_path"], "target_url": "http://example.com/another_path", } update_response = manager.update( redirect_path=new_redirect["redirect_path"], target_url=new_redirect["target_url"], ) found_record = self.collection.find_one( {"redirect_path": new_redirect["redirect_path"]} ) new_redirect_path = new_redirect["redirect_path"] new_target_url = new_redirect["target_url"] self.assertEqual(update_response["redirect_path"], new_redirect_path) self.assertEqual(found_record["redirect_path"], new_redirect_path) self.assertEqual(update_response["target_url"], new_target_url) self.assertEqual(found_record["target_url"], new_target_url) self.assertTrue(update_response["permanent"]) self.assertTrue(found_record["permanent"]) def test_all(self): manager = self._get_manager() all_redirects = manager.all() expected_one = self.redirect_one expected_one["permanent"] = False self.assertEqual( sorted(all_redirects, key=lambda x: x["redirect_path"]), sorted( [expected_one, self.redirect_two, self.redirect_three], key=lambda x: x["redirect_path"], ), ) def test_delete(self): manager = self._get_manager() delete_path = self.redirect_one["redirect_path"] assert manager.exists(delete_path) manager.delete(delete_path) self.assertFalse(manager.exists(delete_path)) self.assertFalse(self.collection.find_one(self.redirect_one))
class TestRedirectManager(SimpleTestCase): """ Test the RedirectRecord model. """ redirect_one = { 'redirect_path': 'hello/world.fish/and.chips', 'target_url': 'https://example.com/something' } redirect_two = { 'permanent': False, 'redirect_path': 'what-now', 'target_url': '/something-else' } redirect_three = { 'permanent': True, 'redirect_path': 'third-redirect', 'target_url': '/third-target' } collection = None def _get_manager(self): """ A provisioned mock collection for testing """ self.collection = MongoClient().db.collection self.collection.insert(copy(self.redirect_one)) self.collection.insert(copy(self.redirect_two)) self.collection.insert(copy(self.redirect_three)) return RedirectManager(self.collection) def test_exists(self): manager = self._get_manager() response_one = manager.exists( redirect_path=self.redirect_one['redirect_path']) response_two = manager.exists( redirect_path=self.redirect_two['redirect_path']) response_three = manager.exists( redirect_path=self.redirect_three['redirect_path']) response_four = manager.exists('non-existent') self.assertTrue(response_one) self.assertTrue(response_two) self.assertTrue(response_three) self.assertFalse(response_four) def test_fetch(self): manager = self._get_manager() response_one = manager.fetch(self.redirect_one['redirect_path']) response_two = manager.fetch(self.redirect_two['redirect_path']) response_three = manager.fetch(self.redirect_three['redirect_path']) response_four = manager.fetch('some/other/path') expected_one = self.redirect_one expected_one['permanent'] = False self.assertEqual(response_one, expected_one) self.assertEqual(response_two, self.redirect_two) self.assertEqual(response_three, self.redirect_three) self.assertIsNone(response_four) def test_create(self): manager = self._get_manager() new_redirect = { 'redirect_path': 'new/redirect', 'target_url': 'http://example.com/some_path' } response_new = manager.update( redirect_path=new_redirect['redirect_path'], target_url=new_redirect['target_url']) new_record = self.collection.find_one(new_redirect) new_redirect['permanent'] = False self.assertEqual(response_new, new_redirect) self.assertEqual(new_record['redirect_path'], new_redirect['redirect_path']) self.assertEqual(new_record['target_url'], new_record['target_url']) def test_update(self): manager = self._get_manager() new_redirect = { 'redirect_path': self.redirect_three['redirect_path'], 'target_url': 'http://example.com/another_path' } update_response = manager.update( redirect_path=new_redirect['redirect_path'], target_url=new_redirect['target_url']) found_record = self.collection.find_one( {"redirect_path": new_redirect['redirect_path']}) new_redirect_path = new_redirect['redirect_path'] new_target_url = new_redirect['target_url'] self.assertEqual(update_response['redirect_path'], new_redirect_path) self.assertEqual(found_record['redirect_path'], new_redirect_path) self.assertEqual(update_response['target_url'], new_target_url) self.assertEqual(found_record['target_url'], new_target_url) self.assertTrue(update_response['permanent']) self.assertTrue(found_record['permanent']) def test_all(self): manager = self._get_manager() all_redirects = manager.all() expected_one = self.redirect_one expected_one['permanent'] = False self.assertEqual( sorted(all_redirects, key=lambda x: x['redirect_path']), sorted([expected_one, self.redirect_two, self.redirect_three], key=lambda x: x['redirect_path'])) def test_delete(self): manager = self._get_manager() delete_path = self.redirect_one['redirect_path'] assert manager.exists(delete_path) manager.delete(delete_path) self.assertFalse(manager.exists(delete_path)) self.assertFalse(self.collection.find_one(self.redirect_one))