def test_get_item_id(self): equipment = Equipment() equipment.id = 1 self.mock_equipment_service.get_all_equipment.return_value = [equipment] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(1, equipment_store.get_value(iter, 0))
def test_description_set_to_non_string(self): equipment = Equipment() try: equipment.description = 42 except (TypeError): pass else: self.fail("Should not be able to set description to non string value.")
def test_get_item_active(self): equipment = Equipment() equipment.id = 1 equipment.active = False self.mock_equipment_service.get_all_equipment.return_value = [equipment] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertFalse(equipment_store.get_value(iter, 4))
def test_prior_usage_set_to_non_numeric_string(self): equipment = Equipment() try: equipment.prior_usage = "test" except(ValueError): pass else: self.fail("Should not be able to set life expectancy to non numeric value.")
def test_notes_set_to_non_string(self): equipment = Equipment() try: equipment.notes = 42 except (TypeError): pass else: self.fail("Should not be able to set notes to non-string value.")
def test_get_item_description(self): equipment = Equipment() equipment.id = 1 equipment.description = u"item description" self.mock_equipment_service.get_all_equipment.return_value = [equipment] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals("item description", equipment_store.get_value(iter, 1))
def test_prior_usage_set_to_non_numeric_string(self): equipment = Equipment() try: equipment.prior_usage = "test" except (ValueError): pass else: self.fail("Should not be able to set life expectancy to non numeric value.")
def test_active_set_to_non_boolean(self): equipment = Equipment() try: equipment.active = "test" except(TypeError): pass else: self.fail("Should not be able to set active to non-boolean value.")
def test_id_set_to_non_numeric_string(self): equipment = Equipment() try: equipment.id = "test" except (ValueError): pass else: self.fail("Should not be able to set equipment id to non numeric value.")
def test_description_set_to_non_string(self): equipment = Equipment() try: equipment.description = 42 except(TypeError): pass else: self.fail("Should not be able to set description to non string value.")
def test_id_set_to_non_numeric_string(self): equipment = Equipment() try: equipment.id = "test" except(ValueError): pass else: self.fail("Should not be able to set equipment id to non numeric value.")
def test_notes_set_to_non_string(self): equipment = Equipment() try: equipment.notes = 42 except(TypeError): pass else: self.fail("Should not be able to set notes to non-string value.")
def test_active_set_to_non_boolean(self): equipment = Equipment() try: equipment.active = "test" except (TypeError): pass else: self.fail("Should not be able to set active to non-boolean value.")
def test_get_item_usage_text(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [equipment] self.mock_equipment_service.get_equipment_usage.return_value = 100 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals("100 / 200", equipment_store.get_value(iter, 3))
def test_get_item_usage_percent_usage_exceeds_life_expectancy(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [equipment] self.mock_equipment_service.get_equipment_usage.return_value = 300 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(100, equipment_store.get_value(iter, 2), "Progress bar cannot exceed 100%.")
def test_get_item_usage_percent_zero_usage(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [equipment] self.mock_equipment_service.get_equipment_usage.return_value = 0 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(0, equipment_store.get_value(iter, 2))
def test_update_equipment_non_existant(self): self.mock_ddbb.select.return_value = [] equipment = Equipment() equipment.id = 1 try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to update an item which did not previously exist.") except(EquipmentServiceException): pass
def test_update_equipment_non_existant(self): self.mock_ddbb.select.return_value = [] equipment = Equipment() equipment.id = 1 try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to update an item which did not previously exist.") except (EquipmentServiceException): pass
def test_active_set_to_non_boolean(self): equipment = Equipment() equipment.active = "test" self.ddbb.session.add(equipment) try: self.ddbb.session.commit() self.assertTrue(equipment.active) except StatementError: pass
def test_get_item_id(self): equipment = Equipment() equipment.id = 1 self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(1, equipment_store.get_value(iter, 0))
def test_store_equipment_duplicate_description(self): self.mock_ddbb.select.return_value = [(1,)] equipment = Equipment() equipment.description = u"test item" try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to store new item with non-unique description.") except(EquipmentServiceException): pass
def test_store_equipment_duplicate_description(self): self.mock_ddbb.select.return_value = [(1,)] equipment = Equipment() equipment.description = u"test item" try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to store new item with non-unique description.") except (EquipmentServiceException): pass
def test_multiple_equipment_items(self): equipment1 = Equipment() equipment1.id = 1 equipment2 = Equipment() equipment2.id = 2 self.mock_equipment_service.get_all_equipment.return_value = [equipment1, equipment2] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() iter = equipment_store.iter_next(iter) self.assertEquals(2, equipment_store.get_value(iter, 0))
def test_update_equipment_duplicate_description(self): self.mock_ddbb.select.return_value = [(1, u"test item", True, 500, 200, u"Test notes.")] equipment = Equipment() equipment.id = 2 equipment.description = u"test item" try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to change item description to non-unique value.") except(EquipmentServiceException): pass
def test_notes_set_to_string(self): equipment = Equipment() equipment.notes = "100$ Shoes" + chr(255) try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except (ProgrammingError, DataError, OperationalError): pass else: self.fail("Should not be able to set notes to non-unicode string value.")
def test_get_item_active(self): equipment = Equipment() equipment.id = 1 equipment.active = False self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertFalse(equipment_store.get_value(iter, 4))
def test_update_equipment(self): equipment = Equipment() equipment.id = 1 equipment.description = u"new description" self.mock_ddbb.select.return_value = [(1, u"old description", 1, 0, 0,u"")] self.equipment_service.store_equipment(equipment) self.mock_ddbb.update.assert_called_with("equipment", "description,active,life_expectancy,prior_usage,notes", ["new description", 1, 0, 0,"" ], "id = 1")
def test_prior_usage_set_to_non_numeric_string(self): equipment = Equipment() equipment.prior_usage = "test" try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except StatementError: pass else: self.fail("Should not be able to set life expectancy to non numeric value.")
def test_id_set_to_non_numeric_string(self): equipment = Equipment() equipment.id = "test" try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except (IntegrityError, OperationalError, DataError): pass else: self.fail("Should not be able to set equipment id to non numeric value.")
def test_update_equipment_duplicate_description(self): self.mock_ddbb.select.return_value = [(1, u"test item", True, 500, 200, u"Test notes.")] equipment = Equipment() equipment.id = 2 equipment.description = u"test item" try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to change item description to non-unique value.") except (EquipmentServiceException): pass
def test_description_set_to_non_unicode_string(self): equipment = Equipment() equipment.description = "100$ Shoes" + chr(255) try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except (ProgrammingError, DataError): pass else: self.fail("Should not be able to set description to non unicode string value.")
def test_get_item_usage_percent_zero_usage(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] self.mock_equipment_service.get_equipment_usage.return_value = 0 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(0, equipment_store.get_value(iter, 2))
def test_get_item_description(self): equipment = Equipment() equipment.id = 1 equipment.description = u"item description" self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals("item description", equipment_store.get_value(iter, 1))
def test_get_item_usage_text_rounded(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] self.mock_equipment_service.get_equipment_usage.return_value = 100.6 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEqual("101 / 200", equipment_store.get_value(iter, 3))
def test_get_item_usage_text_usage_exceeds_life_expectancy(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] self.mock_equipment_service.get_equipment_usage.return_value = 300 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals("300 / 200", equipment_store.get_value(iter, 3))
def test_get_item_usage_percent_usage_exceeds_life_expectancy(self): equipment = Equipment() equipment.id = 1 equipment.life_expectancy = 200 self.mock_equipment_service.get_all_equipment.return_value = [ equipment ] self.mock_equipment_service.get_equipment_usage.return_value = 300 equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() self.assertEquals(100, equipment_store.get_value(iter, 2), "Progress bar cannot exceed 100%.")
def test_id_set_to_non_numeric_string(self): if self.ddbb.engine.name == 'mysql': self.skipTest('Not supported on Mysql 5.6') equipment = Equipment() equipment.id = "test" try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except (IntegrityError, OperationalError, DataError): pass else: self.fail("Should not be able to set equipment id to non numeric value.")
def test_description_set_to_non_unicode_string(self): if self.ddbb.engine.name == 'mysql': self.skipTest('Not supported on Mysql 5.6') equipment = Equipment() equipment.description = "100$ Shoes" + chr(255) try: self.ddbb.session.add(equipment) self.ddbb.session.flush() except (ProgrammingError, DataError, OperationalError): pass else: self.fail("Should not be able to set description to non unicode string value.")
def test_update_equipment(self): equipment = Equipment() equipment.id = 1 equipment.description = u"new description" self.mock_ddbb.select.return_value = [(1, u"old description", 1, 0, 0, u"")] self.equipment_service.store_equipment(equipment) self.mock_ddbb.update.assert_called_with( "equipment", "description,active,life_expectancy,prior_usage,notes", ["new description", 1, 0, 0, ""], "id = 1", )
def test_store_equipment_duplicate_description(self): self.mock_ddbb.session.execute(self.equipment_table.insert(), {"life_expectancy": 500, "notes": u"Test notes.", "description": u"test item", "prior_usage": 200, "active": True}) equipment = Equipment() equipment.description = u"test item" try: self.equipment_service.store_equipment(equipment) self.fail("Should not be able to store new item with non-unique description.") except(EquipmentServiceException): pass
def _confirm_add_equipment_clicked(self, widget): #FIXME input validation for numeric fields description = gtk_str( self._builder.get_object( "entryEquipmentAddDescription").get_text()) life_expectancy = gtk_str( self._builder.get_object( "entryEquipmentAddLifeExpectancy").get_text()) prior_usage = gtk_str( self._builder.get_object("entryEquipmentAddPriorUsage").get_text()) active = self._builder.get_object( "checkbuttonEquipmentAddActive").get_active() notes_buffer = self._builder.get_object( "textviewEquipmentAddNotes").get_buffer() notes = gtk_str( notes_buffer.get_text(notes_buffer.get_start_iter(), notes_buffer.get_end_iter(), True)) new_equipment = Equipment() new_equipment.description = description new_equipment.active = bool(active) new_equipment.life_expectancy = int(life_expectancy) new_equipment.prior_usage = int(prior_usage) new_equipment.notes = notes self._equipment_store.add_equipment(new_equipment) self.show_page_equipment_list()
def test_store_equipment(self): equipment = Equipment() equipment.description = u"test description" equipment_ids = [] def mock_select(table, columns, where): if columns == "id": return equipment_ids else: return [(2, u"", 1, 0, 0,u"")] def update_equipment_ids(*args): equipment_ids.append([1]) self.mock_ddbb.select = mock.Mock(wraps=mock_select) self.mock_ddbb.insert.side_effect = update_equipment_ids stored_equipment = self.equipment_service.store_equipment(equipment) self.mock_ddbb.insert.assert_called_with("equipment", "description,active,life_expectancy,prior_usage,notes", ["test description", 1, 0, 0,"" ]) self.assertEquals(2, stored_equipment.id)
def test_store_equipment(self): equipment = Equipment() equipment.description = u"test description" equipment_ids = [] def mock_select(table, columns, where): if columns == "id": return equipment_ids else: return [(2, u"", 1, 0, 0, u"")] def update_equipment_ids(*args): equipment_ids.append([1]) self.mock_ddbb.select = mock.Mock(wraps=mock_select) self.mock_ddbb.insert.side_effect = update_equipment_ids stored_equipment = self.equipment_service.store_equipment(equipment) self.mock_ddbb.insert.assert_called_with( "equipment", "description,active,life_expectancy,prior_usage,notes", ["test description", 1, 0, 0, ""] ) self.assertEquals(2, stored_equipment.id)
def test_multiple_equipment_items(self): equipment1 = Equipment() equipment1.id = 1 equipment2 = Equipment() equipment2.id = 2 self.mock_equipment_service.get_all_equipment.return_value = [ equipment1, equipment2 ] equipment_store = EquipmentStore(self.mock_equipment_service) iter = equipment_store.get_iter_first() iter = equipment_store.iter_next(iter) self.assertEquals(2, equipment_store.get_value(iter, 0))
def _confirm_add_equipment_clicked(self, widget): #FIXME input validation for numeric fields description = self._builder.get_object("entryEquipmentAddDescription").get_text() life_expectancy = self._builder.get_object("entryEquipmentAddLifeExpectancy").get_text() prior_usage = self._builder.get_object("entryEquipmentAddPriorUsage").get_text() active = self._builder.get_object("checkbuttonEquipmentAddActive").get_active() notes_buffer = self._builder.get_object("textviewEquipmentAddNotes").get_buffer() notes = notes_buffer.get_text(notes_buffer.get_start_iter(), notes_buffer.get_end_iter()) new_equipment = Equipment() new_equipment.description = unicode(description) new_equipment.active = active new_equipment.life_expectancy = life_expectancy new_equipment.prior_usage = prior_usage new_equipment.notes = unicode(notes) self._equipment_store.add_equipment(new_equipment) self.show_page_equipment_list()
def _confirm_add_equipment_clicked(self, widget): #FIXME input validation for numeric fields description = gtk_str(self._builder.get_object("entryEquipmentAddDescription").get_text()) life_expectancy = gtk_str(self._builder.get_object("entryEquipmentAddLifeExpectancy").get_text()) prior_usage = gtk_str(self._builder.get_object("entryEquipmentAddPriorUsage").get_text()) active = self._builder.get_object("checkbuttonEquipmentAddActive").get_active() notes_buffer = self._builder.get_object("textviewEquipmentAddNotes").get_buffer() notes = gtk_str(notes_buffer.get_text(notes_buffer.get_start_iter(), notes_buffer.get_end_iter(), True)) new_equipment = Equipment() new_equipment.description = description new_equipment.active = bool(active) new_equipment.life_expectancy = int(life_expectancy) new_equipment.prior_usage = int(prior_usage) new_equipment.notes = notes self._equipment_store.add_equipment(new_equipment) self.show_page_equipment_list()
def _confirm_add_equipment_clicked(self, widget): #FIXME input validation for numeric fields description = self._builder.get_object( "entryEquipmentAddDescription").get_text() life_expectancy = self._builder.get_object( "entryEquipmentAddLifeExpectancy").get_text() prior_usage = self._builder.get_object( "entryEquipmentAddPriorUsage").get_text() active = self._builder.get_object( "checkbuttonEquipmentAddActive").get_active() notes_buffer = self._builder.get_object( "textviewEquipmentAddNotes").get_buffer() notes = notes_buffer.get_text(notes_buffer.get_start_iter(), notes_buffer.get_end_iter()) new_equipment = Equipment() new_equipment.description = unicode(description) new_equipment.active = active new_equipment.life_expectancy = life_expectancy new_equipment.prior_usage = prior_usage new_equipment.notes = unicode(notes) self._equipment_store.add_equipment(new_equipment) self.show_page_equipment_list()
def test_life_expectancy_set_to_numeric_string(self): equipment = Equipment() equipment.life_expectancy = "3" self.assertEquals(3, equipment.life_expectancy)
def test_prior_usage_set_to_integer(self): equipment = Equipment() equipment.prior_usage = 2 self.assertEquals(2, equipment.prior_usage)
def test_prior_usage_set_to_numeric_string(self): equipment = Equipment() equipment.prior_usage = "3" self.assertEquals(3, equipment.prior_usage)
def test_notes_set_to_unicode_string(self): equipment = Equipment() equipment.notes = u"Zapatos de €100." self.assertEquals(u"Zapatos de €100.", equipment.notes)
def test_equals_instances_with_same_id(self): equipment1 = Equipment() equipment1.id = 1 equipment2 = Equipment() equipment2.id = 1 self.assertEqual(equipment1, equipment2, "Equipment instances with same id should be equal.")
def test_description_set_to_unicode_string(self): equipment = Equipment() equipment.description = u"Zapatos de €100" self.assertEquals(u"Zapatos de €100", equipment.description)
def test_get_equipment_usage_none(self): self.mock_ddbb.select.return_value = [(None,)] equipment = Equipment() equipment.id = 1 usage = self.equipment_service.get_equipment_usage(equipment) self.assertEquals(0, usage)
def test_active_set_to_boolean(self): equipment = Equipment() equipment.active = False self.assertFalse(equipment.active)
def test_active_defaults_to_true(self): equipment = Equipment() self.assertTrue(equipment.active)
def test_id_set_to_integer(self): equipment = Equipment() equipment.id = 2 self.assertEquals(2, equipment.id)
def test_id_set_to_numeric_string(self): equipment = Equipment() equipment.id = "3" self.assertEquals(3, equipment.id)
def test_equals_instances_with_different_ids(self): equipment1 = Equipment() equipment1.id = 1 equipment2 = Equipment() equipment2.id = 2 self.assertNotEqual(equipment1, equipment2, "Equipment instances with different ids should not be equal.")