def setUp(self): self.logged_in_user = make_user() (self.el1, ) = generate_fake_links(self.logged_in_user, count=1) (self.el2, ) = generate_fake_links(self.logged_in_user, is_external=True, count=1) self.el1.categories.add('social') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.assertTrue(login_user(self, self.logged_in_user))
def setUp(self): org = create_organisation("Heavy Users", num_teams=1, num_members=8) # user variable names here are ordered by usage self.top_user_1 = org.team_set.all()[0].user_set.all()[4] self.top_user_2 = org.team_set.all()[0].user_set.all()[2] self.top_user_3 = org.team_set.all()[0].user_set.all()[3] self.top_user_4 = org.team_set.all()[0].user_set.all()[1] self.top_user_5 = org.team_set.all()[0].user_set.all()[0] self.top_user_6 = org.team_set.all()[0].user_set.all()[6] self.owner_user = org.team_set.all()[0].user_set.all()[5] self.used_link, = generate_fake_links(self.owner_user, 2) register_link_usage_for_user(self.used_link, self.top_user_1, 13) register_link_usage_for_user(self.used_link, self.top_user_2, 12) register_link_usage_for_user(self.used_link, self.top_user_3, 10) register_link_usage_for_user(self.used_link, self.top_user_4, 9) register_link_usage_for_user(self.used_link, self.top_user_5, 7) register_link_usage_for_user(self.used_link, self.top_user_6, 5) register_link_usage_for_user(self.used_link, self.owner_user, 4) login_user(self, self.owner_user) # We need this for time mocking. self.now = now()
def test_lighthouse_has_first_links(self): """ Ensure that the migrations responsible for the creation of the Lighthouse links have captured the first two links """ user = make_user() (l1, l2) = generate_fake_links(owner=user, count=2) all_links = Link.objects.all() self.assertEqual(len(all_links), 4) lighthouse = Link.objects.get(pk=1) self.assertEqual(lighthouse.name, 'Lighthouse') self.assertEqual(lighthouse.destination, '/') self.assertEqual( lighthouse.description, 'Web application for finding useful tools, data and techniques') lighthouse_api = Link.objects.get(pk=2) self.assertEqual(lighthouse_api.name, 'Lighthouse API') self.assertEqual(lighthouse_api.destination, '/api/') exp = 'The API for this application.\n\n' exp += 'Documentation for using the API can ' exp += 'be found at [/api/](/api/).' self.assertEqual(lighthouse_api.description, exp)
def setUp(self): self.user = make_user() (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8) = generate_fake_links(self.user, count=8) self.el1.categories.add('great') self.el2.categories.add('great') self.el3.categories.add('great') self.el4.categories.add('great') self.el5.categories.add('great') self.el6.categories.add('great') self.el7.is_external = True self.el7.save() self.el8.is_external = True self.el8.save() self.assertTrue(login_user(self, self.user)) self.unfound_link_1 = Link.objects.create( name='Google Translate', destination='https://mail.google.com', description='Internet translation', owner=self.user, ) self.unfound_link_2 = Link.objects.create( name='Google Mail', destination='https://translate.google.com', description='Internet email', owner=self.user, ) rebuild_index.Command().handle(interactive=False, verbosity=0)
def setUp(self): org = create_organisation( 'Heavy Users', num_teams=1, num_members=8, ) # user variable names here are ordered by usage self.top_user_1 = org.team_set.all()[0].user_set.all()[4] self.top_user_2 = org.team_set.all()[0].user_set.all()[2] self.top_user_3 = org.team_set.all()[0].user_set.all()[3] self.top_user_4 = org.team_set.all()[0].user_set.all()[1] self.top_user_5 = org.team_set.all()[0].user_set.all()[0] self.top_user_6 = org.team_set.all()[0].user_set.all()[6] self.owner_user = org.team_set.all()[0].user_set.all()[5] self.used_link, = generate_fake_links(self.owner_user, 2) register_link_usage_for_user(self.used_link, self.top_user_1, 13) register_link_usage_for_user(self.used_link, self.top_user_2, 12) register_link_usage_for_user(self.used_link, self.top_user_3, 10) register_link_usage_for_user(self.used_link, self.top_user_4, 9) register_link_usage_for_user(self.used_link, self.top_user_5, 7) register_link_usage_for_user(self.used_link, self.top_user_6, 5) register_link_usage_for_user(self.used_link, self.owner_user, 4) login_user(self, self.owner_user) # We need this for time mocking. self.now = now()
def test_lighthouse_has_first_links(self): """ Ensure that the migrations responsible for the creation of the Lighthouse links have captured the first two links """ user = make_user() (l1, l2) = generate_fake_links(owner=user, count=2) all_links = Link.objects.all() self.assertEqual(len(all_links), 4) lighthouse = Link.objects.get(pk=1) self.assertEqual(lighthouse.name, 'Lighthouse') self.assertEqual(lighthouse.destination, '/') self.assertEqual( lighthouse.description, 'Web application for finding useful tools, data and techniques' ) lighthouse_api = Link.objects.get(pk=2) self.assertEqual(lighthouse_api.name, 'Lighthouse API') self.assertEqual(lighthouse_api.destination, '/api/') exp = 'The API for this application.\n\n' exp += 'Documentation for using the API can ' exp += 'be found at [/api/](/api/).' self.assertEqual( lighthouse_api.description, exp )
def setUp(self): self.logged_in_user = make_user() (self.el1, self.el2, self.el3,) = generate_fake_links( self.logged_in_user, count=3 ) self.el1.categories.add('mapping') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.el3.categories.add('social') self.el3.save() self.el3.name = 'Unique' self.el3.save() self.logged_in_user.favourites.add(self.el2) self.logged_in_user.favourites.add(self.el3) self.assertTrue(login_user(self, self.logged_in_user)) rebuild_index.Command().handle(interactive=False, verbosity=0)
def setUp(self): self.logged_in_user = make_user() ( self.el1, self.el2, self.el3, ) = generate_fake_links(self.logged_in_user, count=3) self.el1.categories.add('mapping') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.el3.categories.add('social') self.el3.save() self.el3.name = 'Unique' self.el3.save() self.logged_in_user.favourites.add(self.el2) self.logged_in_user.favourites.add(self.el3) self.assertTrue(login_user(self, self.logged_in_user)) rebuild_index.Command().handle(interactive=False, verbosity=0)
def setUp(self): self.logged_in_user = make_user() self.assertTrue(login_user(self, self.logged_in_user)) self.el1, = generate_fake_links( self.logged_in_user, count=1, is_external=True )
def setUp(self): self.logged_in_user = make_user() self.assertTrue(login_user(self, self.logged_in_user)) self.el1, self.el2, = generate_fake_links(self.logged_in_user, count=2, is_external=True) self.logged_in_user.favourites.add(self.el1) self.logged_in_user.favourites.add(self.el2)
def setUp(self): self.logged_in_user = make_user() el1, el2 = generate_fake_links(self.logged_in_user, count=2) self.existing_link_1 = el1 self.existing_link_2 = el2 self.assertTrue(login_user(self, self.logged_in_user))
def test_normal_edit_page_has_destination_box(self): self.logged_in_user = make_user() self.app.get(reverse('login')) link, = generate_fake_links(owner=self.logged_in_user) self.assertTrue(login_user(self, self.logged_in_user)) response = self.app.get(reverse('link-edit', kwargs={'pk': link.id})) dest_input = response.html.find('input', {'name': 'destination'}) self.assertEqual(dest_input.attrs['type'], 'url')
def setUp(self): self.logged_in_user = make_user() self.assertTrue(login_user(self, self.logged_in_user)) self.el1, self.el2, = generate_fake_links( self.logged_in_user, count=2, is_external=True ) self.logged_in_user.favourites.add(self.el1) self.logged_in_user.favourites.add(self.el2)
def setUp(self): self.logged_in_user = make_user() (self.el1,) = generate_fake_links( self.logged_in_user, count=1 ) (self.el2,) = generate_fake_links( self.logged_in_user, is_external=True, count=1 ) self.el1.categories.add('social') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.assertTrue(login_user(self, self.logged_in_user))
def setUp(self): self.logged_in_user = make_user() el1, el2 = generate_fake_links( self.logged_in_user, count=2 ) self.existing_link_1 = el1 self.existing_link_2 = el2 self.assertTrue(login_user(self, self.logged_in_user))
def setUp(self): self.logged_in_user = make_user() (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6) = generate_fake_links( self.logged_in_user, count=6 ) self.el7, = generate_fake_links( self.logged_in_user, start=7, count=1, is_external=True, ) self.el1.categories.add('mapping') self.el1.categories.add('social') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.el3.categories.add('social') self.el3.save() self.el4.categories.add('geospatial') self.el4.save() self.el5.categories.add('imagery') self.el5.save() self.el6.categories.add('geospatial') self.el6.categories.add('mapping') self.el6.save() self.assertTrue(login_user(self, self.logged_in_user)) rebuild_index.Command().handle(interactive=False, verbosity=0)
def test_list_top_tools_ordered(self): # Create and log in a user get_user_model().objects.create_user(userid='*****@*****.**') form = self.app.get(reverse('login')).form form['userid'] = 'user0001com' form.submit().follow() t = create_team(name='Two members top teams', num_members=2) user1 = t.user_set.all()[0] (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8, self.el9, self.el10) = generate_fake_links(user1, count=10, is_external=True) for i in range(0, 8): self.el4.register_usage(user1, force_new=True) for i in range(0, 6): self.el8.register_usage(user1, force_new=True) for i in range(0, 5): self.el3.register_usage(user1, force_new=True) for i in range(0, 4): self.el1.register_usage(user1, force_new=True) for i in range(0, 2): self.el9.register_usage(user1, force_new=True) for i in range(0, 1): self.el10.register_usage(user1, force_new=True) response = self.app.get(reverse('team-detail', kwargs={"pk": t.pk})) tools_list = response.html.find(id="top_links_list") tools_list_items = tools_list.findChildren('a') self.assertEqual(len(tools_list_items), 5) self.assertIn(self.el4.name, tools_list_items[0].text) self.assertIn(self.el8.name, tools_list_items[1].text) self.assertIn(self.el3.name, tools_list_items[2].text) self.assertIn(self.el1.name, tools_list_items[3].text) self.assertIn(self.el9.name, tools_list_items[4].text) self.assertNotIn(self.el10.name, tools_list.text) self.assertNotIn(self.el2.name, tools_list.text) self.assertNotIn(self.el5.name, tools_list.text) self.assertNotIn(self.el6.name, tools_list.text) self.assertNotIn(self.el7.name, tools_list.text)
def setUp(self): self.logged_in_user = make_user() self.el1, self.el2, self.el3 = generate_fake_links(self.logged_in_user, count=3, is_external=True) self.el4, self.el5 = generate_fake_links(self.logged_in_user, start=4, count=2) # Note: the generator expects to send out a tuple, so allow that. (self.el6,) = generate_fake_links(self.logged_in_user, start=6, count=1, is_external=True) (self.el7,) = generate_fake_links(self.logged_in_user, start=7, count=1) self.el1.categories.add("mapping") self.el1.categories.add("social") self.el1.save() self.el2.categories.add("mapping") self.el2.save() self.el3.categories.add("social") self.el3.save() self.el4.categories.add("geospatial") self.el4.save() self.el5.categories.add("imagery") self.el5.save() self.el6.categories.add("geospatial") self.el6.categories.add("mapping") self.el6.save() self.el7.categories.add("social") self.el7.categories.add("mapping") self.el7.save() self.assertTrue(login_user(self, self.logged_in_user))
def setUp(self): self.logged_in_user = make_user() (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6) = generate_fake_links(self.logged_in_user, count=6) self.el7, = generate_fake_links( self.logged_in_user, start=7, count=1, is_external=True, ) self.el1.categories.add('mapping') self.el1.categories.add('social') self.el1.save() self.el2.categories.add('mapping') self.el2.save() self.el3.categories.add('social') self.el3.save() self.el4.categories.add('geospatial') self.el4.save() self.el5.categories.add('imagery') self.el5.save() self.el6.categories.add('geospatial') self.el6.categories.add('mapping') self.el6.save() self.assertTrue(login_user(self, self.logged_in_user)) rebuild_index.Command().handle(interactive=False, verbosity=0)
def setUp(self): self.user = make_user() (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8) = generate_fake_links( self.user, count=8 ) self.el1.categories.add('great') self.el2.categories.add('great') self.el3.categories.add('great') self.el4.categories.add('great') self.el5.categories.add('great') self.el6.categories.add('great') self.el7.is_external = True self.el7.save() self.el8.is_external = True self.el8.save() self.assertTrue(login_user(self, self.user)) self.unfound_link_1 = Link.objects.create( name='Google Translate', destination='https://mail.google.com', description='Internet translation', owner=self.user, ) self.unfound_link_2 = Link.objects.create( name='Google Mail', destination='https://translate.google.com', description='Internet email', owner=self.user, ) rebuild_index.Command().handle(interactive=False, verbosity=0)
def generate_fake_links(owner, start=1, count=1, is_external=False): return common.generate_fake_links(owner, start, count, is_external)
def test_two_pages(self): el3, el4, el5, el6 = generate_fake_links(self.logged_in_user, start=3, count=4) response = self.app.get(reverse('link-list')) tools_list_result_header = response.html.find(id="tools-header") self.assertEquals(tools_list_result_header.text, 'Showing page 1 of 2') self.assertEquals( len(response.html.findAll('li', {'class': 'link-list-item'})), 5) self.assertIsNotNone(response.html.find('ol', {'class': 'pagination'})) self.assertIn( el6.name, response.html.findAll('li', {'class': 'link-list-item'})[0].text, ) self.assertIn( el5.name, response.html.findAll('li', {'class': 'link-list-item'})[1].text, ) self.assertIn( el4.name, response.html.findAll('li', {'class': 'link-list-item'})[2].text, ) self.assertIn( el3.name, response.html.findAll('li', {'class': 'link-list-item'})[3].text, ) self.assertIn( self.existing_link_2.name, response.html.findAll('li', {'class': 'link-list-item'})[4].text, ) response = response.click(linkid="page-link-next") tools_list_result_header = response.html.find(id="tools-header") self.assertEquals( len(response.html.findAll('li', {'class': 'link-list-item'})), 3) self.assertIsNotNone(response.html.find('ol', {'class': 'pagination'})) self.assertIn( self.existing_link_1.name, response.html.findAll('li', {'class': 'link-list-item'})[0].text, ) self.assertIn( "Lighthouse", response.html.findAll('li', {'class': 'link-list-item'})[1].text, ) self.assertEquals(tools_list_result_header.text, 'Showing page 2 of 2')
def test_list_top_tools_ordered(self): # Create and log in a user get_user_model().objects.create_user(userid='*****@*****.**') form = self.app.get(reverse('login')).form form['userid'] = '*****@*****.**' form.submit().follow() # Create an organistion with two teams and two members in each team. o = create_organisation(name='Two members two teams top orgs', num_teams=2, num_members=2) t1 = o.team_set.all()[0] t2 = o.team_set.all()[1] user1 = t1.user_set.all()[0] user2 = t2.user_set.all()[0] (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8, self.el9, self.el10) = generate_fake_links(user1, count=10, is_external=True) # Register a user from each team as having used various tools to # increase the aggregate from values across teams. # 16 times for existing link 8 for i in range(0, 6): self.el8.register_usage(user1, force_new=True) for i in range(0, 10): self.el8.register_usage(user2, force_new=True) # 13 times for existing link 4 for i in range(0, 8): self.el4.register_usage(user1, force_new=True) for i in range(0, 5): self.el4.register_usage(user2, force_new=True) # 9 times for existing link 1 for i in range(0, 4): self.el1.register_usage(user1, force_new=True) for i in range(0, 5): self.el1.register_usage(user2, force_new=True) # 8 times for existing link 3 for i in range(0, 5): self.el3.register_usage(user1, force_new=True) for i in range(0, 3): self.el3.register_usage(user2, force_new=True) # 4 times for existing link 9 for i in range(0, 3): self.el9.register_usage(user1, force_new=True) for i in range(0, 1): self.el9.register_usage(user2, force_new=True) # 3 times for existing link 10 for i in range(0, 2): self.el10.register_usage(user1, force_new=True) for i in range(0, 1): self.el10.register_usage(user2, force_new=True) response = self.app.get( reverse('organisation-detail', kwargs={"pk": o.pk})) tools_list = response.html.find(id="top_links_list") tools_list_items = tools_list.findChildren('a') self.assertEqual(len(tools_list_items), 5) self.assertIn(self.el8.name, tools_list_items[0].text) self.assertIn(self.el4.name, tools_list_items[1].text) self.assertIn(self.el1.name, tools_list_items[2].text) self.assertIn(self.el3.name, tools_list_items[3].text) self.assertIn(self.el9.name, tools_list_items[4].text) self.assertNotIn(self.el10.name, tools_list.text) self.assertNotIn(self.el2.name, tools_list.text) self.assertNotIn(self.el5.name, tools_list.text) self.assertNotIn(self.el6.name, tools_list.text) self.assertNotIn(self.el7.name, tools_list.text)
def test_list_top_tools_ordered(self): # Create and log in a user get_user_model().objects.create_user(userid='*****@*****.**') form = self.app.get(reverse('login')).form form['userid'] = '*****@*****.**' form.submit().follow() # Create an organistion with two teams and two members in each team. o = create_organisation( name='Two members two teams top orgs', num_teams=2, num_members=2 ) t1 = o.team_set.all()[0] t2 = o.team_set.all()[1] user1 = t1.user_set.all()[0] user2 = t2.user_set.all()[0] (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8, self.el9, self.el10) = generate_fake_links( user1, count=10, is_external=True ) # Register a user from each team as having used various tools to # increase the aggregate from values across teams. # 16 times for existing link 8 for i in range(0, 6): self.el8.register_usage(user1, force_new=True) for i in range(0, 10): self.el8.register_usage(user2, force_new=True) # 13 times for existing link 4 for i in range(0, 8): self.el4.register_usage(user1, force_new=True) for i in range(0, 5): self.el4.register_usage(user2, force_new=True) # 9 times for existing link 1 for i in range(0, 4): self.el1.register_usage(user1, force_new=True) for i in range(0, 5): self.el1.register_usage(user2, force_new=True) # 8 times for existing link 3 for i in range(0, 5): self.el3.register_usage(user1, force_new=True) for i in range(0, 3): self.el3.register_usage(user2, force_new=True) # 4 times for existing link 9 for i in range(0, 3): self.el9.register_usage(user1, force_new=True) for i in range(0, 1): self.el9.register_usage(user2, force_new=True) # 3 times for existing link 10 for i in range(0, 2): self.el10.register_usage(user1, force_new=True) for i in range(0, 1): self.el10.register_usage(user2, force_new=True) response = self.app.get(reverse( 'organisation-detail', kwargs={"pk": o.pk} )) tools_list = response.html.find(id="top_links_list") tools_list_items = tools_list.findChildren('a') self.assertEqual( len(tools_list_items), 5 ) self.assertIn( self.el8.name, tools_list_items[0].text ) self.assertIn( self.el4.name, tools_list_items[1].text ) self.assertIn( self.el1.name, tools_list_items[2].text ) self.assertIn( self.el3.name, tools_list_items[3].text ) self.assertIn( self.el9.name, tools_list_items[4].text ) self.assertNotIn( self.el10.name, tools_list.text ) self.assertNotIn( self.el2.name, tools_list.text ) self.assertNotIn( self.el5.name, tools_list.text ) self.assertNotIn( self.el6.name, tools_list.text ) self.assertNotIn( self.el7.name, tools_list.text )
def test_two_pages(self): el3, el4, el5, el6 = generate_fake_links( self.logged_in_user, start=3, count=4 ) response = self.app.get(reverse('link-list')) tools_list_result_header = response.html.find(id="tools-header") self.assertEquals( tools_list_result_header.text, 'Showing page 1 of 2' ) self.assertEquals( len(response.html.findAll('li', {'class': 'link-list-item'})), 5 ) self.assertIsNotNone(response.html.find('ol', {'class': 'pagination'})) self.assertIn( el6.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[0].text, ) self.assertIn( el5.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[1].text, ) self.assertIn( el4.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[2].text, ) self.assertIn( el3.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[3].text, ) self.assertIn( self.existing_link_2.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[4].text, ) response = response.click(linkid="page-link-next") tools_list_result_header = response.html.find(id="tools-header") self.assertEquals( len(response.html.findAll('li', {'class': 'link-list-item'})), 3 ) self.assertIsNotNone(response.html.find('ol', {'class': 'pagination'})) self.assertIn( self.existing_link_1.name, response.html.findAll( 'li', {'class': 'link-list-item'} )[0].text, ) self.assertIn( "Lighthouse", response.html.findAll( 'li', {'class': 'link-list-item'} )[1].text, ) self.assertEquals( tools_list_result_header.text, 'Showing page 2 of 2' )
def test_list_top_tools_ordered(self): # Create and log in a user get_user_model().objects.create_user(userid='*****@*****.**') form = self.app.get(reverse('login')).form form['userid'] = 'user0001com' form.submit().follow() t = create_team( name='Two members top teams', num_members=2 ) user1 = t.user_set.all()[0] (self.el1, self.el2, self.el3, self.el4, self.el5, self.el6, self.el7, self.el8, self.el9, self.el10) = generate_fake_links( user1, count=10, is_external=True ) for i in range(0, 8): self.el4.register_usage(user1, force_new=True) for i in range(0, 6): self.el8.register_usage(user1, force_new=True) for i in range(0, 5): self.el3.register_usage(user1, force_new=True) for i in range(0, 4): self.el1.register_usage(user1, force_new=True) for i in range(0, 2): self.el9.register_usage(user1, force_new=True) for i in range(0, 1): self.el10.register_usage(user1, force_new=True) response = self.app.get(reverse('team-detail', kwargs={"pk": t.pk})) tools_list = response.html.find(id="top_links_list") tools_list_items = tools_list.findChildren('a') self.assertEqual( len(tools_list_items), 5 ) self.assertIn( self.el4.name, tools_list_items[0].text ) self.assertIn( self.el8.name, tools_list_items[1].text ) self.assertIn( self.el3.name, tools_list_items[2].text ) self.assertIn( self.el1.name, tools_list_items[3].text ) self.assertIn( self.el9.name, tools_list_items[4].text ) self.assertNotIn( self.el10.name, tools_list.text ) self.assertNotIn( self.el2.name, tools_list.text ) self.assertNotIn( self.el5.name, tools_list.text ) self.assertNotIn( self.el6.name, tools_list.text ) self.assertNotIn( self.el7.name, tools_list.text )