Add automatic tag collections
This commit is contained in:
+32
-9
@@ -154,7 +154,7 @@ class CollectionTests(TestCase):
|
||||
|
||||
def test_create_collection_and_add_compatible_note(self):
|
||||
response = self.client.post(reverse('collection_create'), {
|
||||
'title': 'Documentation', 'description': 'Guide', 'visibility': Item.Visibility.PRIVATE,
|
||||
'title': 'Documentation', 'description': 'Guide', 'visibility': Item.Visibility.PRIVATE, 'mode': Collection.Mode.MANUAL,
|
||||
})
|
||||
collection = Collection.objects.get()
|
||||
self.assertRedirects(response, collection.get_absolute_url())
|
||||
@@ -199,12 +199,12 @@ class CollectionTests(TestCase):
|
||||
self.assertEqual(response.status_code, 409)
|
||||
self.assertTrue(Item.objects.filter(pk=note.id).exists())
|
||||
|
||||
def test_team_tag_creates_team_collection(self):
|
||||
def test_team_selection_creates_team_collection(self):
|
||||
team = Team.objects.create(name='Docs team', slug='docs', owner=self.user)
|
||||
TeamMembership.objects.create(team=team, user=self.user, role=TeamMembership.Role.OWNER)
|
||||
tag = Tag.objects.create(name='docs')
|
||||
response = self.client.post(reverse('collection_create'), {
|
||||
'title': 'Team guide', 'visibility': Item.Visibility.PRIVATE, 'tags': [tag.id],
|
||||
'title': 'Team guide', 'visibility': Item.Visibility.PRIVATE,
|
||||
'mode': Collection.Mode.MANUAL, 'team': team.id,
|
||||
})
|
||||
collection = Collection.objects.get()
|
||||
self.assertRedirects(response, collection.get_absolute_url())
|
||||
@@ -218,13 +218,36 @@ class CollectionTests(TestCase):
|
||||
response = self.client.get(reverse('collection_manage', args=[collection.id]))
|
||||
self.assertNotContains(response, f'name="item_id" value="{public_note.id}"')
|
||||
|
||||
def test_collection_form_only_offers_team_tags(self):
|
||||
def test_collection_form_separates_teams_and_content_tags(self):
|
||||
team = Team.objects.create(name='Docs team', slug='docs', owner=self.user)
|
||||
TeamMembership.objects.create(team=team, user=self.user, role=TeamMembership.Role.OWNER)
|
||||
Tag.objects.create(name='docs')
|
||||
Tag.objects.create(name='ordinary')
|
||||
note = Item.objects.create(owner=self.user, content='#ordinary')
|
||||
note.sync_metadata()
|
||||
response = self.client.get(reverse('collection_create'))
|
||||
self.assertEqual(list(response.context['form'].fields['tags'].queryset.values_list('name', flat=True)), ['docs'])
|
||||
form = response.context['form']
|
||||
self.assertEqual(list(form.fields['team'].queryset), [team])
|
||||
self.assertEqual(list(form.fields['filter_tags'].queryset.values_list('name', flat=True)), ['ordinary'])
|
||||
|
||||
def test_tag_collection_is_dynamic_and_sorted_by_creation(self):
|
||||
first = Item.objects.create(owner=self.user, kind=Item.Kind.NOTE, content='First #guide #basics')
|
||||
first.sync_metadata()
|
||||
Item.objects.create(owner=self.user, kind=Item.Kind.NOTE, content='Ignored #guide').sync_metadata()
|
||||
second = Item.objects.create(owner=self.user, kind=Item.Kind.NOTE, content='Second #guide #basics')
|
||||
second.sync_metadata()
|
||||
collection = Collection.objects.create(owner=self.user, title='Automatic', mode=Collection.Mode.TAGS)
|
||||
collection.filter_tags.set(Tag.objects.filter(name__in=['guide', 'basics']))
|
||||
|
||||
response = self.client.get(collection.get_absolute_url())
|
||||
html = response.content.decode()
|
||||
self.assertContains(response, 'Tag-Sammlung')
|
||||
self.assertLess(html.index('First #guide'), html.index('Second #guide'))
|
||||
self.assertNotContains(response, 'Ignored #guide')
|
||||
self.assertContains(response, reverse('collection_edit', args=[collection.id]))
|
||||
self.assertNotContains(response, reverse('collection_manage', args=[collection.id]))
|
||||
|
||||
manage_response = self.client.get(reverse('collection_manage', args=[collection.id]))
|
||||
self.assertRedirects(manage_response, reverse('collection_edit', args=[collection.id]))
|
||||
|
||||
def test_collection_opens_as_continuous_reading_view(self):
|
||||
collection = Collection.objects.create(owner=self.user, title='Reading view')
|
||||
@@ -247,8 +270,8 @@ class CollectionTests(TestCase):
|
||||
|
||||
def test_collection_tag_is_not_removed_as_unused(self):
|
||||
tag = Tag.objects.create(name='documentation')
|
||||
collection = Collection.objects.create(owner=self.user, title='Tagged')
|
||||
collection.tags.add(tag)
|
||||
collection = Collection.objects.create(owner=self.user, title='Tagged', mode=Collection.Mode.TAGS)
|
||||
collection.filter_tags.add(tag)
|
||||
note = Item.objects.create(owner=self.user, content='#temporary')
|
||||
note.sync_metadata()
|
||||
note.content = ''
|
||||
|
||||
Reference in New Issue
Block a user