From 582ef39f46f88e43704df871470dfe7218cb3aa8 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 11 Aug 2014 17:24:36 -0300 Subject: first implementation of tags --- service/app/tags.py | 32 ++++++++++++++++++++++++++++++++ service/test/test_tags.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 service/app/tags.py create mode 100644 service/test/test_tags.py (limited to 'service') diff --git a/service/app/tags.py b/service/app/tags.py new file mode 100644 index 00000000..39709a4c --- /dev/null +++ b/service/app/tags.py @@ -0,0 +1,32 @@ +class Tag: + + def __init__(self, name): + self.name = name + + def __eq__(self, other): + return self.name == other.name + + def __hash__(self): + return self.name.__hash__() + + +class Tags: + + SPECIAL_TAGS = ['inbox', 'sent', 'drafts', 'trash'] + + def __init__(self): + self.tags = set([Tag(name) for name in self.SPECIAL_TAGS]) + + def add(self, name): + self.tags.add(Tag(name)) + + def find(self, name): + for tag in self.tags: + if tag.name == name: + return tag + + def __len__(self): + return len(self.tags) + + def __iter__(self): + return self.tags.__iter__() \ No newline at end of file diff --git a/service/test/test_tags.py b/service/test/test_tags.py new file mode 100644 index 00000000..5e0ea426 --- /dev/null +++ b/service/test/test_tags.py @@ -0,0 +1,37 @@ +import unittest +from app.tags import Tags, Tag + + +class TagTestCase(unittest.TestCase): + + def test_create_tag(self): + tag = Tag('test') + self.assertEqual(tag.name, 'test') + +class TagsTestCase(unittest.TestCase): + + def test_add_tag_to_collection(self): + tag_collection = Tags() + tag_collection.add('test') + self.assertEqual(len(tag_collection), len(Tags())+1) + tag_collection.add('test2') + self.assertEqual(len(tag_collection), len(Tags())+2) + + def test_no_tag_duplication(self): + tag_collection = Tags() + tag_collection.add('test') + self.assertEqual(len(tag_collection), len(Tags())+1) + tag_collection.add('test') + self.assertEqual(len(tag_collection), len(Tags())+1) + + def test_find_tag_on_collection(self): + tag_collection = Tags() + tag_collection.add('test') + tag_collection.add('test2') + self.assertEqual(tag_collection.find('test'), Tag('test')) + + def test_special_tags_always_exist(self): + special_tags = ['inbox', 'sent', 'drafts', 'trash'] + tag_collection = Tags() + for tag in special_tags: + self.assertIn(Tag(tag), tag_collection) \ No newline at end of file -- cgit v1.2.3