class FileGroupDateMethodsTest(unittest.TestCase):

    def setUp(self):
        self.group = FileGroup('0513dda0-582f-447d-846f-096e5df9e2bb~2')

    def test_datetime_stored_is_none(self):
        self.group._info_cache = {'datetime_stored': ''}
        self.assertIsNone(self.group.datetime_stored())

    def test_datetime_stored_is_utc(self):
        self.group._info_cache = {'datetime_stored': '2013-04-03T12:01:28.714Z'}
        expected_datetime = datetime.datetime(
            year=2013, month=4, day=3, hour=12, minute=1, second=28,
            microsecond=714000, tzinfo=tzutc())
        self.assertEqual(self.group.datetime_stored(), expected_datetime)

    def test_datetime_created_is_none(self):
        self.group._info_cache = {'datetime_created': ''}
        self.assertIsNone(self.group.datetime_created())

    def test_datetime_created_is_utc(self):
        self.group._info_cache = {'datetime_created': '2013-04-03T12:01:28.714Z'}
        expected_datetime = datetime.datetime(
            year=2013, month=4, day=3, hour=12, minute=1, second=28,
            microsecond=714000, tzinfo=tzutc())
        self.assertEqual(self.group.datetime_created(), expected_datetime)
예제 #2
0
    def test_do_not_store_twice(self, request):
        group = FileGroup(cdn_url_or_group_id="0513dda0-582f-447d-846f-096e5df9e2bb~2")
        # GET /api/groups/{group_id}/
        request.return_value = MockResponse(status=200, data=b'{"datetime_stored": "2013-04-03T12:01:28.714Z"}')
        group.store()
        group.store()

        self.assertEqual(request.call_count, 1)
예제 #3
0
    def test_successful_store(self, request):
        group = FileGroup(cdn_url_or_group_id="0513dda0-582f-447d-846f-096e5df9e2bb~2")
        group._info_cache = {"datetime_stored": None}
        # PUT /api/groups/{group_id}/storage/
        request.return_value = MockResponse(status=200, data=b'{"datetime_stored": "2013-04-03T12:01:28.714Z"}')
        group.store()

        self.assertEqual(request.call_count, 1)
예제 #4
0
    def setUp(self, request):
        request.return_value = MockResponse(
            status=200, data=api_response_from_file('group_files.json'))

        self.group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2')
        # It is necessary to avoid api call in tests below.
        self.group.update_info()
예제 #5
0
    def test_do_not_store_twice(self, request):
        group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2')
        # GET /api/groups/{group_id}/
        request.return_value = MockResponse(
            status=200, data='{"datetime_stored": "2013-04-03T12:01:28.714Z"}')
        group.store()
        group.store()

        self.assertEqual(request.call_count, 1)
예제 #6
0
    def test_successful_store(self, request):
        group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2')
        group._info_cache = {"datetime_stored": None}
        # PUT /api/groups/{group_id}/storage/
        request.return_value = MockResponse(
            status=200, data='{"datetime_stored": "2013-04-03T12:01:28.714Z"}')
        group.store()

        self.assertEqual(request.call_count, 1)
예제 #7
0
    def test_valid_group_id(self):
        group_id = 'd5f45851-3a58-41a4-b76c-356e22837a2f~12'
        expected_cdn_url = 'http://www.ucarecdn.com/d5f45851-3a58-41a4-b76c-356e22837a2f~12/'

        group = FileGroup(group_id)
        self.assertEqual(group.cdn_url, expected_cdn_url)
        self.assertEqual(len(group), 12)
예제 #8
0
    def test_extracting_group_id_from_url(self):
        cdn_url = 'http://www.ucarecdn.com/d5f45851-3a58-41a4-b76c-356e22837a2f~12/'
        expected_group_id = 'd5f45851-3a58-41a4-b76c-356e22837a2f~12'

        group = FileGroup(cdn_url)
        self.assertEqual(group.id, expected_group_id)
        self.assertEqual(len(group), 12)
class FileGroupAsContainerTypeTest(unittest.TestCase):

    @patch('requests.sessions.Session.request', autospec=True)
    def setUp(self, request):
        request.return_value = MockResponse(
            status=200,
            data=api_response_from_file('group_files.json')
        )

        self.group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2'
        )
        # It is necessary to avoid api call in tests below.
        self.group.update_info()

    def test_positive_index(self):
        self.assertIsInstance(self.group[0], File)

    def test_negative_index(self):
        self.assertIsNone(self.group[-1])

    def test_index_is_out_of_range(self):
        with self.assertRaises(IndexError):
            self.group[2]

    def test_non_int_index(self):
        with self.assertRaises(TypeError):
            self.group['a']

    def test_iteration(self):
        [file_ for file_ in self.group]

    def test_slice_is_not_supported(self):
        with self.assertRaises(TypeError):
            self.group[0:99]

    def test_len(self):
        self.assertEqual(len(self.group), 2)

    def test_immutability(self):
        with self.assertRaises(TypeError):
            self.group[0] = 123
    def setUp(self, request):
        request.return_value = MockResponse(
            status=200,
            data=api_response_from_file('group_files.json')
        )

        self.group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2'
        )
        # It is necessary to avoid api call in tests below.
        self.group.update_info()
예제 #11
0
class FileGroupDateMethodsTest(unittest.TestCase):
    def setUp(self):
        self.group = FileGroup('0513dda0-582f-447d-846f-096e5df9e2bb~2')

    def test_datetime_stored_is_none(self):
        self.group._info_cache = {'datetime_stored': ''}
        self.assertIsNone(self.group.datetime_stored())

    def test_datetime_stored_is_utc(self):
        self.group._info_cache = {
            'datetime_stored': '2013-04-03T12:01:28.714Z'
        }
        expected_datetime = datetime.datetime(year=2013,
                                              month=4,
                                              day=3,
                                              hour=12,
                                              minute=1,
                                              second=28,
                                              microsecond=714000,
                                              tzinfo=tzutc())
        self.assertEqual(self.group.datetime_stored(), expected_datetime)

    def test_datetime_created_is_none(self):
        self.group._info_cache = {'datetime_created': ''}
        self.assertIsNone(self.group.datetime_created())

    def test_datetime_created_is_utc(self):
        self.group._info_cache = {
            'datetime_created': '2013-04-03T12:01:28.714Z'
        }
        expected_datetime = datetime.datetime(year=2013,
                                              month=4,
                                              day=3,
                                              hour=12,
                                              minute=1,
                                              second=28,
                                              microsecond=714000,
                                              tzinfo=tzutc())
        self.assertEqual(self.group.datetime_created(), expected_datetime)
예제 #12
0
class FileGroupAsContainerTypeTest(unittest.TestCase):
    @patch('requests.sessions.Session.request', autospec=True)
    @patch.object(conf, 'secret', 'secret')
    def setUp(self, request):
        request.return_value = MockResponse(
            status=200, data=api_response_from_file('group_files.json'))

        self.group = FileGroup(
            cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2')
        # It is necessary to avoid api call in tests below.
        self.group.update_info()

    def test_positive_index(self):
        self.assertIsInstance(self.group[0], File)

    def test_negative_index(self):
        self.assertIsNone(self.group[-1])

    def test_index_is_out_of_range(self):
        with self.assertRaises(IndexError):
            self.group[2]

    def test_non_int_index(self):
        with self.assertRaises(TypeError):
            self.group['a']

    def test_iteration(self):
        [file_ for file_ in self.group]

    def test_slice_is_not_supported(self):
        with self.assertRaises(TypeError):
            self.group[0:99]

    def test_len(self):
        self.assertEqual(len(self.group), 2)

    def test_immutability(self):
        with self.assertRaises(TypeError):
            self.group[0] = 123
예제 #13
0
    def test_group_successfully_created(self, request):
        json_response = """{
            "id": "0513dda0-582f-447d-846f-096e5df9e2bb~1",
            "files_count": 1,
            "files": [
                {"uuid": "0cea5a61-f976-47d9-815a-e787f52aeba1"}
            ]
        }
        """
        request.return_value = MockResponse(status=200, data=json_response)

        files = (File('0cea5a61-f976-47d9-815a-e787f52aeba1'), )
        group = FileGroup.create(files)

        self.assertIsInstance(group, FileGroup)
        self.assertEqual(len(group), 1)
        self.assertEqual(group[0].uuid, '0cea5a61-f976-47d9-815a-e787f52aeba1')
예제 #14
0
    def test_group_successfully_created(self, request):
        json_response = b"""{
            "id": "0513dda0-582f-447d-846f-096e5df9e2bb~1",
            "files_count": 1,
            "files": [
                {"uuid": "0cea5a61-f976-47d9-815a-e787f52aeba1"}
            ]
        }
        """
        request.return_value = MockResponse(status=200, data=json_response)

        files = (File("0cea5a61-f976-47d9-815a-e787f52aeba1"),)
        group = FileGroup.create(files)

        self.assertIsInstance(group, FileGroup)
        self.assertEqual(len(group), 1)
        self.assertEqual(group[0].uuid, "0cea5a61-f976-47d9-815a-e787f52aeba1")
예제 #15
0
 def setUp(self):
     self.group = FileGroup('0513dda0-582f-447d-846f-096e5df9e2bb~2')
예제 #16
0
def create_group(arg_namespace):
    files = [File(uuid) for uuid in arg_namespace.paths]
    group = FileGroup.create(files)
    pprint(group.info())
예제 #17
0
 def setUp(self):
     self.group = FileGroup(
         cdn_url_or_group_id='0513dda0-582f-447d-846f-096e5df9e2bb~2')
 def test_successful_create(self):
     files = [
         upload_tmp_txt_file(content='пока'),
     ]
     group = FileGroup.create(files)
     self.assertIsInstance(group, FileGroup)
예제 #19
0
def create_file_group(files_qty=1):
    files = [upload_tmp_txt_file() for file_ in range(files_qty)]
    group = FileGroup.create(files)
    return group
예제 #20
0
 def test_successful_create(self):
     files = [
         upload_tmp_txt_file(content='пока'),
     ]
     group = FileGroup.create(files)
     self.assertIsInstance(group, FileGroup)
예제 #21
0
def create_group(arg_namespace):
    files = [File(uuid) for uuid in arg_namespace.paths]
    group = FileGroup.create(files)
    pprint(group.info())
 def setUp(self):
     self.group = FileGroup('0513dda0-582f-447d-846f-096e5df9e2bb~2')
예제 #23
0
파일: forms.py 프로젝트: degerli/ugallery
    def save_photos(self, gallery, group_cdn_url):
        group = FileGroup(group_cdn_url)

        for i, f in enumerate(group):
            Photo(gallery=gallery, title='Photo #{}'.format(i+1),
                  image=f).save()