From 7c1607f0198cca5b0323187e70648cb7994dc187 Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Tue, 9 Nov 2021 22:50:43 +0530 Subject: [PATCH 1/9] Add tests for `warning_messages.py` file --- sapp/tests/warning_messages_test.py | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 sapp/tests/warning_messages_test.py diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py new file mode 100644 index 00000000..50c016a9 --- /dev/null +++ b/sapp/tests/warning_messages_test.py @@ -0,0 +1,46 @@ +import json +import pathlib +from unittest import TestCase + +from ..db import DB, DBType +from ..models import WarningMessage, create as create_model +from ..warning_messages import update_warning_messages +from .fake_object_generator import FakeObjectGenerator + +test_metadata = { + "codes": { + "1001": "Updated warning message from test", + "1002": "Updated warning message from test 2", + }, +} + + +class WarningMessagesTest(TestCase): + def setUp(self) -> None: + self.db = DB(DBType.MEMORY) + create_model(self.db) + self.fakes = FakeObjectGenerator() + + with open("sample_metadata.json", "w") as outfile: + json.dump(test_metadata, outfile) + + def tearDown(self) -> None: + pathlib.Path("sample_metadata.json").unlink() + + def testUpdateWarningMessages(self): + with self.db.make_session() as session: + update_warning_messages(self.db, pathlib.Path("sample_metadata.json")) + self.assertEqual( + session.query(WarningMessage) + .filter(WarningMessage.code == "1001") + .first() + .message, + "Updated warning message from test", + ) + self.assertEqual( + session.query(WarningMessage) + .filter(WarningMessage.code == "1002") + .first() + .message, + "Updated warning message from test 2", + ) From 393479c36c1ea57a5c8f37af60b2c56ea9693082 Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Tue, 9 Nov 2021 23:22:18 +0530 Subject: [PATCH 2/9] add test for `upsert_entry` method --- sapp/tests/warning_messages_test.py | 42 +++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index 50c016a9..089545a8 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -2,9 +2,11 @@ import pathlib from unittest import TestCase +from sqlalchemy import Table + from ..db import DB, DBType from ..models import WarningMessage, create as create_model -from ..warning_messages import update_warning_messages +from ..warning_messages import update_warning_messages, upsert_entry from .fake_object_generator import FakeObjectGenerator test_metadata = { @@ -12,6 +14,10 @@ "1001": "Updated warning message from test", "1002": "Updated warning message from test 2", }, + "codes2": { + "2001": "Updated warning message from another test", + "2002": "Updated warning message from another test 2", + }, } @@ -27,7 +33,7 @@ def setUp(self) -> None: def tearDown(self) -> None: pathlib.Path("sample_metadata.json").unlink() - def testUpdateWarningMessages(self): + def test_update_warning_messages(self): with self.db.make_session() as session: update_warning_messages(self.db, pathlib.Path("sample_metadata.json")) self.assertEqual( @@ -44,3 +50,35 @@ def testUpdateWarningMessages(self): .message, "Updated warning message from test 2", ) + + def test_upsert_entry(self): + warning_messages_table = Table( + WarningMessage.__tablename__, WarningMessage.metadata + ) + codes = test_metadata["codes2"] + with self.db.make_session() as session: + with session.connection() as database_connection: + for code, message in codes.items(): + upsert_entry( + database_connection, warning_messages_table, code, message + ) + self.assertEqual( + database_connection.execute( + warning_messages_table.select().where( + warning_messages_table.c.code == "2001" + ) + ) + .first() + .message, + "Updated warning message from another test", + ) + self.assertEqual( + database_connection.execute( + warning_messages_table.select().where( + warning_messages_table.c.code == "2002" + ) + ) + .first() + .message, + "Updated warning message from another test 2", + ) From cf8a37cdc4f0f16361e1a6e7dda67c3624fcebec Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Thu, 18 Nov 2021 20:36:39 +0530 Subject: [PATCH 3/9] fix type check errors --- sapp/tests/warning_messages_test.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index 089545a8..75257985 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -33,25 +33,25 @@ def setUp(self) -> None: def tearDown(self) -> None: pathlib.Path("sample_metadata.json").unlink() - def test_update_warning_messages(self): + def test_update_warning_messages(self) -> None: with self.db.make_session() as session: update_warning_messages(self.db, pathlib.Path("sample_metadata.json")) self.assertEqual( session.query(WarningMessage) .filter(WarningMessage.code == "1001") .first() - .message, - "Updated warning message from test", + .__dict__["message"], + test_metadata["codes"]["1001"], ) self.assertEqual( session.query(WarningMessage) .filter(WarningMessage.code == "1002") .first() - .message, - "Updated warning message from test 2", + .__dict__["message"], + test_metadata["codes"]["1002"], ) - def test_upsert_entry(self): + def test_upsert_entry(self) -> None: warning_messages_table = Table( WarningMessage.__tablename__, WarningMessage.metadata ) @@ -60,7 +60,7 @@ def test_upsert_entry(self): with session.connection() as database_connection: for code, message in codes.items(): upsert_entry( - database_connection, warning_messages_table, code, message + database_connection, warning_messages_table, int(code), message ) self.assertEqual( database_connection.execute( From d78aad5b5dc2ea5ff61573089c7b1548d41df7eb Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Mon, 22 Nov 2021 01:55:42 +0530 Subject: [PATCH 4/9] added test for updation, test for existence and added tempfile module --- sapp/tests/warning_messages_test.py | 48 +++++++++++++++++++---------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index 75257985..2dabf8a5 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -7,7 +7,7 @@ from ..db import DB, DBType from ..models import WarningMessage, create as create_model from ..warning_messages import update_warning_messages, upsert_entry -from .fake_object_generator import FakeObjectGenerator +import tempfile test_metadata = { "codes": { @@ -25,29 +25,27 @@ class WarningMessagesTest(TestCase): def setUp(self) -> None: self.db = DB(DBType.MEMORY) create_model(self.db) - self.fakes = FakeObjectGenerator() - - with open("sample_metadata.json", "w") as outfile: - json.dump(test_metadata, outfile) - - def tearDown(self) -> None: - pathlib.Path("sample_metadata.json").unlink() def test_update_warning_messages(self) -> None: + temp = tempfile.NamedTemporaryFile(mode="w+") + json.dump(test_metadata, temp) + temp.flush() with self.db.make_session() as session: - update_warning_messages(self.db, pathlib.Path("sample_metadata.json")) + update_warning_messages(self.db, pathlib.Path(temp.name)) + code1001 = ( + session.query(WarningMessage).filter_by(code="1001").one_or_none() + ) + code1002 = ( + session.query(WarningMessage).filter_by(code="1002").one_or_none() + ) + self.assertIsNotNone(code1001) self.assertEqual( - session.query(WarningMessage) - .filter(WarningMessage.code == "1001") - .first() - .__dict__["message"], + code1001.message, test_metadata["codes"]["1001"], ) + self.assertIsNotNone(code1002) self.assertEqual( - session.query(WarningMessage) - .filter(WarningMessage.code == "1002") - .first() - .__dict__["message"], + code1002.message, test_metadata["codes"]["1002"], ) @@ -59,9 +57,11 @@ def test_upsert_entry(self) -> None: with self.db.make_session() as session: with session.connection() as database_connection: for code, message in codes.items(): + # Test for insertion upsert_entry( database_connection, warning_messages_table, int(code), message ) + self.assertEqual( database_connection.execute( warning_messages_table.select().where( @@ -82,3 +82,17 @@ def test_upsert_entry(self) -> None: .message, "Updated warning message from another test 2", ) + # Test for Updation + upsert_entry( + database_connection, warning_messages_table, 2001, "Testing Update" + ) + self.assertEqual( + database_connection.execute( + warning_messages_table.select().where( + warning_messages_table.c.code == "2001" + ) + ) + .first() + .message, + "Testing Update", + ) From df8ab6c427a56fffccb45db286b0b5fa90b4c4ba Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Thu, 2 Dec 2021 21:37:31 +0530 Subject: [PATCH 5/9] add copyright comments and context manager --- sapp/tests/warning_messages_test.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index 2dabf8a5..a093d268 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -1,5 +1,12 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + import json import pathlib +import tempfile +from contextlib import ExitStack from unittest import TestCase from sqlalchemy import Table @@ -7,7 +14,6 @@ from ..db import DB, DBType from ..models import WarningMessage, create as create_model from ..warning_messages import update_warning_messages, upsert_entry -import tempfile test_metadata = { "codes": { @@ -27,10 +33,10 @@ def setUp(self) -> None: create_model(self.db) def test_update_warning_messages(self) -> None: - temp = tempfile.NamedTemporaryFile(mode="w+") - json.dump(test_metadata, temp) - temp.flush() - with self.db.make_session() as session: + with ExitStack() as stack: + temp = stack.enter_context(tempfile.NamedTemporaryFile(mode="w+")) + json.dump(test_metadata, temp) + session = stack.enter_context(self.db.make_session()) update_warning_messages(self.db, pathlib.Path(temp.name)) code1001 = ( session.query(WarningMessage).filter_by(code="1001").one_or_none() From a9a3bbc8bbf4f8c63d5025c580a1387640e6695a Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Tue, 7 Dec 2021 18:23:34 +0530 Subject: [PATCH 6/9] add `.read()` to the temp file before using it. --- sapp/tests/warning_messages_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index a093d268..ebb21a18 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -36,6 +36,7 @@ def test_update_warning_messages(self) -> None: with ExitStack() as stack: temp = stack.enter_context(tempfile.NamedTemporaryFile(mode="w+")) json.dump(test_metadata, temp) + temp.read() session = stack.enter_context(self.db.make_session()) update_warning_messages(self.db, pathlib.Path(temp.name)) code1001 = ( From 6ef78158898570099605c0e387d6706d57314914 Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Tue, 7 Dec 2021 23:19:14 +0530 Subject: [PATCH 7/9] rename `temp` file --- sapp/tests/warning_messages_test.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index ebb21a18..cd51182b 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -34,11 +34,13 @@ def setUp(self) -> None: def test_update_warning_messages(self) -> None: with ExitStack() as stack: - temp = stack.enter_context(tempfile.NamedTemporaryFile(mode="w+")) - json.dump(test_metadata, temp) - temp.read() + temporary_meta_file = stack.enter_context( + tempfile.NamedTemporaryFile(mode="w+") + ) + json.dump(test_metadata, temporary_meta_file) + temporary_meta_file.read() session = stack.enter_context(self.db.make_session()) - update_warning_messages(self.db, pathlib.Path(temp.name)) + update_warning_messages(self.db, pathlib.Path(temporary_meta_file.name)) code1001 = ( session.query(WarningMessage).filter_by(code="1001").one_or_none() ) From ab729908518723b67235b998d1bc1fe0de879c12 Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Thu, 9 Dec 2021 22:14:25 +0530 Subject: [PATCH 8/9] add purpose of `.read()` --- sapp/tests/warning_messages_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index cd51182b..9504d88f 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -38,7 +38,7 @@ def test_update_warning_messages(self) -> None: tempfile.NamedTemporaryFile(mode="w+") ) json.dump(test_metadata, temporary_meta_file) - temporary_meta_file.read() + temporary_meta_file.read() # populates the buffer session = stack.enter_context(self.db.make_session()) update_warning_messages(self.db, pathlib.Path(temporary_meta_file.name)) code1001 = ( From 1bf0553e8a57231b211a2b6d5a6447bb06cd1651 Mon Sep 17 00:00:00 2001 From: Arpan Abhishek Date: Sat, 11 Dec 2021 15:00:19 +0530 Subject: [PATCH 9/9] change `.read()` to `flush()` --- sapp/tests/warning_messages_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapp/tests/warning_messages_test.py b/sapp/tests/warning_messages_test.py index 9504d88f..6139e323 100644 --- a/sapp/tests/warning_messages_test.py +++ b/sapp/tests/warning_messages_test.py @@ -38,7 +38,7 @@ def test_update_warning_messages(self) -> None: tempfile.NamedTemporaryFile(mode="w+") ) json.dump(test_metadata, temporary_meta_file) - temporary_meta_file.read() # populates the buffer + temporary_meta_file.flush() # flush the buffer session = stack.enter_context(self.db.make_session()) update_warning_messages(self.db, pathlib.Path(temporary_meta_file.name)) code1001 = (