def test_refresh_not_called_after_save_if_disabled(self): app_settings.SEGMENTS_REFRESH_ON_SAVE = False s = AllUserSegmentFactory() s.refresh = Mock() s.save() self.assertEqual(s.refresh.call_count, 0) app_settings.SEGMENTS_REFRESH_ON_SAVE = True
def test_refresh_not_called_after_save_if_disabled(self): app_settings.SEGMENTS_REFRESH_ON_SAVE = False s = AllUserSegmentFactory() s.refresh = Mock() s.save() self.assertEqual(s.refresh.call_count, 0) app_settings.SEGMENTS_REFRESH_ON_SAVE = True
def test_refresh(self, mocked_segment): s1 = AllUserSegmentFactory() s1.refresh = Mock(return_value=True) mocked_segment.assert_called_once_with() refresh_segments() self.assertEqual(mocked_segment.call_count, 2)
def test_refresh_existing_segment(self): segments.app_settings.SEGMENTS_REFRESH_ON_SAVE = True segments.app_settings.SEGMENTS_REFRES_ASYNC = False u1 = UserFactory() s = AllUserSegmentFactory() u2 = UserFactory() self.assertEqual(len(s), 1) s.refresh() self.assertEqual(len(s), 2)
def test_refresh_existing_segment(self): segments.app_settings.SEGMENTS_REFRESH_ON_SAVE = True segments.app_settings.SEGMENTS_REFRES_ASYNC = False u1 = UserFactory() s = AllUserSegmentFactory() u2 = UserFactory() self.assertEqual(len(s), 1) s.refresh() self.assertEqual(len(s), 2)
def test_refresh(self, mocked_segment): s1 = AllUserSegmentFactory() s1.refresh = Mock(return_value=True) s2 = AllUserSegmentFactory() s2.refresh = Mock(return_value=True) mocked_segment.return_value = [s1, s2] refresh_segments() self.assertEqual(s1.refresh.call_count, 1)
def setUp(self): Segment.helper = SegmentHelper(redis_obj=fakeredis.FakeStrictRedis( charset='utf-8', decode_responses=True)) self.u = UserFactory() self.s = AllUserSegmentFactory() app_settings.SEGMENTS_REFRESH_ASYNC = False app_settings.SEGMENTS_REFRESH_ON_SAVE = True
def test_multiple_dbs(self): """ This seems crazy, but it's the only way to get test coverage on this in the test environment. For instance Segments is using a SEGMENTS_CONNECT_NAME of 'readonly' vs. 'default' everywhere else in the application. There's no way to actually set that up with a sqlite test DB, so we simulate it here by explicitly creating a "mirror" user object directly in the second database. """ from segments.tests.models import SegmentableUser app_settings.SEGMENTS_EXEC_CONNECTION = 'other' SegmentableUser.objects.using(app_settings.SEGMENTS_EXEC_CONNECTION).create() s = AllUserSegmentFactory() s.refresh() self.assertEqual(len(s), 1) app_settings.SEGMENTS_EXEC_CONNECTION = 'default'
def test_multiple_dbs(self): """ This seems crazy, but it's the only way to get test coverage on this in the test environment. For instance Segments is using a SEGMENTS_CONNECT_NAME of 'readonly' vs. 'default' everywhere else in the application. There's no way to actually set that up with a sqlite test DB, so we simulate it here by explicitly creating a "mirror" user object directly in the second database. """ from segments.tests.models import SegmentableUser app_settings.SEGMENTS_EXEC_CONNECTION = 'other' SegmentableUser.objects.using( app_settings.SEGMENTS_EXEC_CONNECTION).create() s = AllUserSegmentFactory() s.refresh() self.assertEqual(len(s), 1) app_settings.SEGMENTS_EXEC_CONNECTION = 'default'
def test_delete_segment(self): user = UserFactory() segment = AllUserSegmentFactory() self.assertTrue(segment.has_member(user)) segment.delete() self.assertFalse(segment.has_member(user))
def test_refresh(self, mocked_segment): s1 = AllUserSegmentFactory() s1.refresh = Mock(return_value=True) s2 = AllUserSegmentFactory() s2.refresh = Mock(return_value=True) mocked_segment.return_value = [s1, s2] refresh_segments() self.assertEqual(s1.refresh.call_count, 1)
def test_refresh_after_create(self): s = AllUserSegmentFactory.build() s.refresh = Mock() s.save() s.refresh.assert_called_with()
def test_refresh_after_save(self): s = AllUserSegmentFactory() s.refresh = Mock() s.save() self.assertEqual(s.refresh.call_count, 1)
def test_refresh_async_called_if_enabled(self, mocked_refresh): mocked_refresh.delay = Mock() app_settings.SEGMENTS_REFRESH_ASYNC = True AllUserSegmentFactory() self.assertEqual(mocked_refresh.delay.call_count, 1) app_settings.SEGMENTS_REFRESH_ASYNC = False
def test_delete_segment(self, p_redis_sadd, p_rsm): s = AllUserSegmentFactory() s.delete() self.assertTrue(p_redis_sadd.called) self.assertTrue(p_rsm.called)
def test_refresh_after_save(self): s = AllUserSegmentFactory() s.refresh = Mock() s.save() self.assertEqual(s.refresh.call_count, 1)
def test_refresh_after_create(self): s = AllUserSegmentFactory.build() s.refresh = Mock() s.save() s.refresh.assert_called_with()
def test_multiple_segments(self): s1 = AllUserSegmentFactory() s2 = AllUserSegmentFactory() self.assertEqual(len(s2), 1)
def test_segment_refresh(self): s = AllUserSegmentFactory() UserFactory() s.refresh() self.assertEqual(len(s), 2) # Change up the segment to only match one user s.definition = 'select * from %s where id = %s limit 1' % ( user_table(), self.u.id) s.save() self.assertEqual(len(s), 1) s.refresh() self.assertEqual(len(s), 1) # Add a 3rd user, should still only store one user u3 = UserFactory() s.refresh() self.assertEqual(len(s), 1) # Expand the definition to include 3 users again s.definition = 'select * from %s' % (user_table()) s.save() s.refresh() self.assertEqual(len(s), 3) # Remove one user u3.delete() s.refresh() self.assertEqual(len(s), 2)
def test_basic_segment(self): s = AllUserSegmentFactory() self.assertEqual(len(s), 1)
def test_segment_refresh(self): s = AllUserSegmentFactory() UserFactory() s.refresh() self.assertEqual(len(s), 2) # Change up the segment to only match one user s.definition = 'select * from %s where id = %s limit 1' % (user_table(), self.u.id) s.save() self.assertEqual(len(s), 1) s.refresh() self.assertEqual(len(s), 1) # Add a 3rd user, should still only store one user u3 = UserFactory() s.refresh() self.assertEqual(len(s), 1) # Expand the definition to include 3 users again s.definition = 'select * from %s' % (user_table()) s.save() s.refresh() self.assertEqual(len(s), 3) # Remove one user u3.delete() s.refresh() self.assertEqual(len(s), 2)
def test_delete_segment(self, p_redis_sadd, p_rsm): s = AllUserSegmentFactory() s.delete() self.assertTrue(p_redis_sadd.called) self.assertTrue(p_rsm.called)