Пример #1
0
 def run(self):
     while not self.stop.is_set():
         if SAVE_NEEDED.is_set():
             print('Save needed, save data')
             SaveLoad(self._collection).save_data()
             SAVE_NEEDED.clear()
         time.sleep(5)
Пример #2
0
 def _prepare_article_with_all_fields(self):
     article = Article(title=self.initial_article_test_data.title,
                       description=self.initial_article_test_data.description,
                       page=self.initial_article_test_data.page, binder=self.initial_article_test_data.binder,
                       tags=self.initial_article_test_data.tags)
     SAVE_NEEDED.clear()
     return article
Пример #3
0
 def test_create_article_with_title_only(self):
     article = Article(title=self.valid_article_test_data.title)
     self.assertIsInstance(
         article, Article,
         'Verify added article is instance of Article class')
     Verifiers().verify_article_with_title_only(
         article=article, reference_article=self.valid_article_test_data)
     self.assertTrue(SAVE_NEEDED.is_set(), 'Verify save needed is set')
Пример #4
0
 def test_create_article_no_title(self):
     with self.assertRaises(
             TypeError,
             msg=
             'Verify exception is raised when creating Article instance without title'
     ):
         Article()
     self.assertFalse(SAVE_NEEDED.is_set())
Пример #5
0
 def test_add_article_with_the_same_uuid(self):
     article_dict = ArticleDict()
     article1 = Article(title='test1')
     article2 = Article(title='test2')
     article2._uuid = article1.uuid
     article_dict[article1.uuid] = article1
     SAVE_NEEDED.clear()
     with self.assertRaises(
             DuplicatedArticle,
             msg=
             f'Verify exception is raised when adding article with the same uuid as existing'
     ):
         article_dict[article2.uuid] = article2
     self.assertFalse(
         SAVE_NEEDED.is_set(),
         f'Verify save is not needed after exception of duplicated uuid')
     self.assertEqual(
         len(article_dict), 1,
         'Verify duplicated article was not added to ArticleDict')
Пример #6
0
 def test_create_article_with_all_fields(self):
     article = Article(title=self.valid_article_test_data.title,
                       description=self.valid_article_test_data.description,
                       page=self.valid_article_test_data.page,
                       binder=self.valid_article_test_data.binder,
                       tags=self.valid_article_test_data.tags)
     self.assertIsInstance(
         article, Article,
         'Verify added article is instance of Article class')
     Verifiers().verify_article_with_all_fields(
         article=article, reference_article=self.valid_article_test_data)
     self.assertTrue(SAVE_NEEDED.is_set(), 'Verify save needed is set')
Пример #7
0
 def test_create_article_invalid_types(self):
     self._type_assertion_test(
         self.invalid_article_test_data.title,
         msg='Verify exception is raised when title is incorrect type')
     self._type_assertion_test(
         self.valid_article_test_data.title,
         description=self.invalid_article_test_data.description,
         msg='Verify exception is raised when description is incorrect type'
     )
     self._type_assertion_test(
         self.valid_article_test_data.title,
         page=self.invalid_article_test_data.page,
         msg='Verify exception is raised when page is incorrect type')
     self._type_assertion_test(
         self.valid_article_test_data.title,
         binder=self.invalid_article_test_data.binder,
         msg='Verify exception is raised when binder is incorrect type')
     self._type_assertion_test(
         self.valid_article_test_data.title,
         tags=self.invalid_article_test_data.tags,
         msg='Verify exception is raised when tags is incorrect type')
     self.assertFalse(SAVE_NEEDED.is_set())
Пример #8
0
 def __setattr__(self, key, value):
     super(Article, self).__setattr__(key, value)
     SAVE_NEEDED.set()
Пример #9
0
 def test_uuid_cannot_be_modified(self):
     article = self._prepare_article_with_title_only()
     with self.assertRaises(AttributeError, msg='Verify uuid cannot be modified'):
         article.uuid = 'modified uuid'
     self.assertFalse(SAVE_NEEDED.is_set(), 'Verify save is not needed after trying to modify uuid')
Пример #10
0
 def _prepare_article_with_title_only(self):
     article = Article(title=self.initial_article_test_data.title)
     SAVE_NEEDED.clear()
     return article
Пример #11
0
 def _type_assertion_test(self, article, attribute, value):
     with self.assertRaises(TypeError,
                            msg=f'Verify exception is raised when modifying {attribute} with incorrect type of value'):
         setattr(article, attribute, value)
     self.assertFalse(SAVE_NEEDED.is_set(),
                      f'Verify save is not needed after exception of incorrect type for attribute {attribute}')
Пример #12
0
 def _save_needed_test(self, msg):
     self.assertTrue(SAVE_NEEDED.is_set(), msg)
     SAVE_NEEDED.clear()
Пример #13
0
 def tearDown(self) -> None:
     SAVE_NEEDED.clear()
Пример #14
0
 def __setitem__(self, key, value):
     if key in self.keys():
         raise DuplicatedArticle(f'Key "{key}" already exists')
     super().__setitem__(key, value)
     SAVE_NEEDED.set()
Пример #15
0
 def __delitem__(self, key):
     super().__delitem__(key)
     SAVE_NEEDED.set()