def test_cart_page(self): create_session(self) cart = Cart(session=self.client.session) cart_item1 = CartItemFactory.create(cart=cart.cart) cart_item2 = CartItemFactory.create(cart=cart.cart) analysis = cart_item1.analysis analysis.last_modified = '2000-01-01T01:01:01Z' analysis.save() page = cart.page() self.assertEqual(len(page), 2) self.assertTrue( ((cart_item1.analysis.analysis_id == page[0]['analysis_id']) and (cart_item2.analysis.analysis_id == page[1]['analysis_id'])) or ((cart_item1.analysis.analysis_id == page[1]['analysis_id']) and (cart_item2.analysis.analysis_id == page[0]['analysis_id']))) self.assertIn('platform', page[0]) self.assertIn('refassem_short_name', page[0]) # check is last_modified is the same as in Result self.assertEqual(analysis.last_modified, page[0]['last_modified']) # test sorting for attr in CART_SORT_ATTRIBUTES: page1 = cart.page(sort_by=attr) page2 = cart.page(sort_by='-%s' % attr) if attr == 'analysis_id': self.assertEqual(page1[0], page2[1]) self.assertEqual(page1[1], page2[0])
def test_cart_class(self): create_session(self) session = Session.objects.get( session_key=self.client.session.session_key) cart = session.cart my_cart = Cart(self.client.session) self.assertEqual(cart.items.count(), 0) # Analysises already created analysis1 = AnalysisFactory.create() analysis2 = AnalysisFactory.create() self.assertFalse(my_cart.in_cart(analysis2.analysis_id)) analysis1_result = { 'analysis_id': analysis1.analysis_id, 'last_modified': analysis1.last_modified} analysis2_result = { 'analysis_id': analysis2.analysis_id, 'last_modified': analysis2.last_modified} my_cart.add(analysis1_result) my_cart.add(analysis2_result) self.assertTrue(my_cart.in_cart(analysis2.analysis_id)) self.assertEqual(cart.items.count(), 2) # remove my_cart.remove(analysis2.analysis_id) self.assertFalse(my_cart.in_cart(analysis2.analysis_id)) self.assertEqual(cart.items.count(), 1) # check update_stats analysis3 = AnalysisFactory.create(state='somestate') analysis3_result = { 'analysis_id': analysis3.analysis_id, 'last_modified': analysis3.last_modified} my_cart.add(analysis3_result) self.assertEqual(my_cart.size, 0) my_cart.update_stats() self.assertEqual( my_cart.size, analysis1.files_size + analysis3.files_size) self.assertEqual(my_cart.all_count, 2) self.assertEqual(my_cart.live_count, 1) # Analysis id not exist result = { 'analysis_id': '01810b1a-84e4-43d5-8a1e-42b132a1126f', 'last_modified': '2012-05-16T20:43:41Z', 'state': 'live', 'files_size': 12345} my_cart.add(result) # Analysis was modified result = { 'analysis_id': analysis1.analysis_id, 'last_modified': '3000-01-01T11:11:11Z', 'state': 'bad', 'files_size': 54321, 'platform': 'PLT1'} self.assertNotEqual(analysis1.last_modified, result['last_modified']) self.assertNotEqual(analysis1.state, result['state']) self.assertNotEqual(analysis1.files_size, result['files_size']) my_cart.add(result) analysis1 = Analysis.objects.get(analysis_id=analysis1.analysis_id) self.assertEqual(analysis1.last_modified, result['last_modified']) self.assertEqual(analysis1.state, result['state']) self.assertEqual(analysis1.files_size, result['files_size'])
def test_clear_cart(self): create_session(self) cart = Cart(session=self.client.session) CartItemFactory.create(cart=cart.cart) CartItemFactory.create(cart=cart.cart) cart.update_stats() self.assertEqual(cart.live_count, 2) self.assertEqual(cart.all_count, 2) cart.clear() self.assertEqual(cart.all_count, 0) self.assertEqual(cart.live_count, 0)
def test_clean_sessions(self): self.assertEqual(Analysis.objects.count(), 0) self.assertEqual(Session.objects.count(), 0) self.assertEqual(CartModel.objects.count(), 0) self.assertEqual(CartItem.objects.count(), 0) # create session, cart, analysis and cart items analysis1 = Analysis.objects.create( analysis_id='017a4d4e-9f4b-4904-824e-060fde3ca223', last_modified='2013-05-16T20:43:40Z', state='live', files_size=4666849442) analysis2 = Analysis.objects.create( analysis_id='016b792f-e659-4143-b833-163141e21363', last_modified='2013-05-16T20:43:40Z', files_size=388596051, state='live') create_session(self) session = Session.objects.get(session_key=self.session.session_key) cart = session.cart # add some items to cart CartItem.objects.create( cart=cart, analysis=analysis1) CartItem.objects.create( cart=cart, analysis=analysis2) # and one more session and cart create_session(self) session = Session.objects.get(session_key=self.session.session_key) cart = session.cart # add some items to cart CartItem.objects.create( cart=cart, analysis=analysis1) self.assertEqual(Analysis.objects.count(), 2) self.assertEqual(Session.objects.count(), 4) self.assertEqual(CartModel.objects.count(), 4) self.assertEqual(CartItem.objects.count(), 3) # try to remove sessions stdout = StringIO() stderr = StringIO() call_command('clean_sessions', stdout=stdout, stderr=stderr) stderr.seek(0) stderr = stderr.read() self.assertIn('Done', stderr) self.assertEqual(Analysis.objects.count(), 0) self.assertEqual(Session.objects.count(), 0) self.assertEqual(CartModel.objects.count(), 0) self.assertEqual(CartItem.objects.count(), 0)
def test_cart_add_files_without_q(self): create_session(self) data = { 'filters': json.dumps({ 'state': '(live)', 'upload_date': '[NOW-1DAY TO NOW]', 'study': '(*Other_Sequencing_Multiisolate)' })} url = reverse('cart_add_remove_items', args=('add',)) response = self.client.post( url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['action'], 'redirect') self.assertTrue(CartModel.objects.filter( session__session_key=self.client.session.session_key).exists())
def test_cart_add_files_with_q(self): oldUseAllMetadataIndex = browser_text_search.useAllMetadataIndex browser_text_search.useAllMetadataIndex = True create_session(self) data = { 'filters': json.dumps({ 'state': '(live)', 'q': '(00b27c0f-acf5-434c-8efa-25b1f3c4f506)' })} url = reverse('cart_add_remove_items', args=('add',)) response = self.client.post( url, data, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) data = json.loads(response.content) self.assertEqual(data['action'], 'redirect') cart_model = CartModel.objects.get( session__session_key=self.client.session.session_key) self.assertTrue(cart_model.items.filter( analysis__analysis_id='00b27c0f-acf5-434c-8efa-25b1f3c4f506') .exists()) browser_text_search.useAllMetadataIndex = oldUseAllMetadataIndex
def test_cart_creation(self): # cart created on session creation self.assertFalse(CartModel.objects.exists()) self.assertFalse(Session.objects.exists()) create_session(self) session = Session.objects.get( session_key=self.client.session.session_key) cart = session.cart self.assertTrue(cart) # add some items to cart analysis = Analysis.objects.create( analysis_id='017a4d4e-9f4b-4904-824e-060fde3ca223', last_modified='2013-05-16T20:43:40Z', state='live', files_size=4666849442) CartItem.objects.create( cart=cart, analysis=analysis) analysis = Analysis.objects.create( analysis_id='016b792f-e659-4143-b833-163141e21363', last_modified='2013-05-16T20:43:40Z', files_size=388596051, state='live') CartItem.objects.create( cart=cart, analysis=analysis) self.assertEqual(cart.items.count(), 2) self.assertEqual(CartItem.objects.count(), 2) self.assertTrue(cart.items.filter( analysis__files_size=4666849442).exists()) # cart remove on sesion remove session.delete() self.assertFalse(Session.objects.filter( session_key=self.client.session.session_key).exists()) self.assertFalse(CartModel.objects.filter(id=cart.id).exists()) self.assertEqual(CartItem.objects.count(), 0)