Ejemplo n.º 1
0
 def test_lastLonLat_property(self):
     point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
     vd = VD()
     vd.lastLonLat = point
     vd.save()
     saved = VD.objects.first()
     self.assertEqual(point, saved.lastLonLat)
Ejemplo n.º 2
0
    def test_placed(self):
        vd = VD()
        vd.save()
        pb_add = PostBase('{"urls": [{"content": "http://www.naver.com/"}]}')
        pb_place1 = PostBase(
            '{"urls": [{"content": "http://place.kakao.com/places/15738374"}]}'
        )
        pb_place2 = PostBase(
            '{"urls": [{"content": "http://place.kakao.com/places/26455534"}]}'
        )

        uplace, is_created = UserPlace.get_or_create_smart(pb_add, vd)
        self.assertEqual(uplace.place, None)

        pb_place1.uplace_uuid = uplace.uuid
        uplace, is_created = UserPlace.get_or_create_smart(
            pb_place1.pb_MAMMA, vd)
        self.assertNotEqual(uplace.place, None)
        self.assertEqual(uplace.lonLat, uplace.place.lonLat)
        place1 = uplace.place

        pb_place2.uplace_uuid = uplace.uuid
        pb_place2.place_id = place1.id
        uplace, is_created = UserPlace.get_or_create_smart(
            pb_place2.pb_MAMMA, vd)
        self.assertNotEqual(uplace.place, None)
        self.assertEqual(uplace.lonLat, uplace.place.lonLat)
        place2 = uplace.place

        self.assertNotEqual(place1, place2)
        self.assertNotEqual(place1.lonLat, place2.lonLat)
Ejemplo n.º 3
0
    def test_placed_by_name2(self):
        vd = VD()
        vd.save()
        pb_add = PostBase('''{
            "urls": [{"content": "http://www.naver.com/"}]
        }''')
        pb_name = PostBase('{"name": {"content": "바이키 문정점"}}')
        pb_place2 = PostBase(
            '{"urls": [{"content": "http://place.kakao.com/places/26455534"}]}'
        )

        self.assertEqual(Place.objects.count(), 0)
        self.assertEqual(PostPiece.objects.count(), 0)
        uplace, is_created = UserPlace.get_or_create_smart(pb_add, vd)
        self.assertEqual(uplace.place, None)
        self.assertEqual(Place.objects.count(), 0)
        self.assertEqual(PostPiece.objects.count(), 0)

        pb_place2.uplace_uuid = uplace.uuid
        uplace, is_created = UserPlace.get_or_create_smart(
            pb_place2.pb_MAMMA, vd)
        self.assertNotEqual(uplace.place, None)
        place2 = uplace.place
        self.assertEqual(Place.objects.count(), 1)
        self.assertNotEqual(place2.placePost.addr1, None)
        self.assertEqual(PostPiece.objects.count(), 1)

        pb_name.uplace_uuid = uplace.uuid
        uplace, is_created = UserPlace.get_or_create_smart(pb_name, vd)
        self.assertNotEqual(uplace.place, None)
        self.assertEqual(Place.objects.count(), 1)
        self.assertEqual(PostPiece.objects.count(), 1)
        place1 = uplace.place
        self.assertEqual(place1, place2)
        self.assertNotEqual(place1.placePost.addr1, None)
Ejemplo n.º 4
0
 def setUp(self):
     super(UserPlaceTest, self).setUp()
     self.place = Place()
     point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
     self.place.lonLat = point
     self.place.save()
     self.vd = VD()
     self.vd.save()
Ejemplo n.º 5
0
 def test_data_property(self):
     j = '{"deviceName": "%s", "deviceTypeName": "%s"}' % (
         SG('[\w\-]{36}').render(), 'LG-F460L')
     vd = VD()
     vd.data = json_loads(j)
     vd.save()
     saved = VD.objects.first()
     self.assertEqual(j, json_dumps(saved.data, encoding='utf-8'))
Ejemplo n.º 6
0
 def test_vd_property(self):
     vd = VD(); vd.save()
     rf = RawFile()
     rf.file = self.uploadFile('test.png')
     rf.vd = vd
     rf.save()
     saved = RawFile.objects.first()
     self.assertNotEqual(rf.vd, None)
     self.assertEqual(saved, rf)
     self.assertEqual(saved.vd, rf.vd)
Ejemplo n.º 7
0
 def test_string_representation(self):
     vd1 = VD()
     self.assertEqual("unknown@email's unknown device", unicode(vd1))
     vd2 = VD(authOwner=self.user,
              realOwner=self.realUser,
              deviceTypeName='LG-F460L',
              deviceName='88:C9:D0:FA:79:57')
     self.assertEqual(
         "*****@*****.**'s LG-F460L (88:C9:D0:FA:79:57)",
         unicode(vd2))
Ejemplo n.º 8
0
 def setUp(self):
     super(BasicImporterViewSetTest, self).setUp()
     self.vd_publisher = VD()
     self.vd_publisher.save()
     self.proxy = Proxy()
     self.proxy.vd = self.vd_publisher
     self.proxy.save()
     self.vd_subscriber = VD.objects.get(id=self.vd_id)
     self.imp = Importer()
     self.imp.publisher = self.proxy
     self.imp.subscriber = self.vd_subscriber
     self.imp.save()
Ejemplo n.º 9
0
class RealUserViewSetBasicTest(APITestBase):
    def setUp(self):
        super(RealUserViewSetBasicTest, self).setUp()
        self.ru = RealUser(email='*****@*****.**')
        self.ru.save()
        self.vd1 = VD(deviceName='test vd 1', realOwner=self.ru)
        self.vd2 = VD(deviceName='test vd 2')
        self.vd3 = VD(deviceName='test vd 3', realOwner=self.ru)
        self.vd1.save()
        self.vd2.save()
        self.vd3.save()
        self.ru_other = RealUser(email='*****@*****.**')
        self.ru_other.save()
        self.vd4 = VD(deviceName='test vd 4', realOwner=self.ru_other)
        self.vd4.save()

    def test_rus_detail(self):
        response = self.client.get('/rus/%s/' % self.ru.id)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        result = json_loads(response.content)
        self.assertEqual(type(result), dict)
        self.assertEqual(result['email'], '*****@*****.**')
        self.assertEqual(type(result['vds']), list)

        vds = result['vds']
        self.assertEqual(len(vds), 2)
        self.assertIn(self.vd1.id, vds)
        self.assertIn(self.vd3.id, vds)
        self.assertNotIn(self.vd2.id, vds)
        self.assertNotIn(self.vd4.id, vds)

    def test_rus_myself_without_login(self):
        response = self.client.get('/rus/myself/vds/')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Ejemplo n.º 10
0
 def test_create_images4_importer_private(self):
     self.assertEqual(Proxy.objects.count(), 1)
     guide_json2 = '{"type": "images", "vd": %d}' % self.vd_subscriber.id
     vd = VD()
     vd.is_private = True
     _vd = VD()
     _vd.save()
     vd.parent = _vd
     vd.save()
     proxy = Proxy.objects.create(vd=vd, guide=guide_json2)
     self.assertEqual(Proxy.objects.count(), 2)
     response = self.client.post('/importers/', dict(guide=guide_json2))
     self.assertEqual(Proxy.objects.count(), 2)
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Ejemplo n.º 11
0
    def test_realOwner_property(self):
        vd = VD(realOwner=self.realUser)
        vd.save()
        saved = VD.objects.first()
        self.assertEqual(saved.realOwner, self.realUser)

        vd2 = VD()
        vd2.realOwner = vd.realOwner
        vd2.save()
        self.assertNotEqual(vd, vd2)
        self.assertEqual(vd.realOwner, vd2.realOwner)
Ejemplo n.º 12
0
    def test_authOwner_property(self):
        vd = VD(authOwner=self.user)
        vd.save()
        saved = VD.objects.first()
        self.assertEqual(saved.authOwner, self.user)

        vd2 = VD()
        vd2.authOwner = vd.authOwner
        vd2.save()
        self.assertNotEqual(vd, vd2)
        self.assertEqual(vd.authOwner, vd2.authOwner)
Ejemplo n.º 13
0
 def test_realOwner_relationship(self):
     self.assertEqual(self.realUser.vds.all().count(), 0)
     vd = VD(realOwner=self.realUser)
     vd.save()
     self.assertEqual(self.realUser.vds.all().count(), 1)
     vd2 = VD(realOwner=self.realUser)
     vd2.save()
     self.assertEqual(self.realUser.vds.all().count(), 2)
Ejemplo n.º 14
0
 def test_parent(self):
     vd_parent = VD()
     vd_parent.save()
     self.assertEqual(vd_parent.childs.count(), 0)
     vd_child = VD(parent=vd_parent)
     vd_child.save()
     saved = VD.objects.all().order_by('-id')[0]
     self.assertEqual(vd_child, saved)
     self.assertEqual(saved.parent, vd_parent)
     self.assertEqual(vd_parent.childs.count(), 1)
     self.assertEqual(vd_parent.childs.first(), saved)
Ejemplo n.º 15
0
 def test_guide_column(self):
     self.assertEqual(self.proxy.guide, json_loads(self.test_guide))
     saved = Proxy.objects.first()
     self.assertEqual(saved.guide, json_loads(self.test_guide))
     proxy2 = Proxy()
     proxy2.vd = VD()
     proxy2.vd.save()
     test_data2 = '{"vd": "myself", "type": "images"}'
     proxy2.guide = test_data2
     with self.assertRaises(IntegrityError):
         proxy2.save()
Ejemplo n.º 16
0
    def setUp(self):
        super(PostPieceTest, self).setUp()
        self.place = Place()
        self.place.save()
        self.uplace = UserPlace()
        self.uplace.save()
        self.vd = VD()
        self.vd.save()

        self.image, is_created = Image.get_or_create_smart(
            'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        )
        self.url, is_created = Url.get_or_create_smart('http://www.naver.com/')

        self.lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        self.addr, is_created = Address.get_or_create_smart(
            '경기도 하남시 풍산로 270, 206동 402호 (선동, 미사강변도시2단지)')
        self.phone, is_created = PhoneNumber.get_or_create_smart(
            '010-5597-9245')
Ejemplo n.º 17
0
 def setUp(self):
     super(RealUserViewSetBasicTest, self).setUp()
     self.ru = RealUser(email='*****@*****.**')
     self.ru.save()
     self.vd1 = VD(deviceName='test vd 1', realOwner=self.ru)
     self.vd2 = VD(deviceName='test vd 2')
     self.vd3 = VD(deviceName='test vd 3', realOwner=self.ru)
     self.vd1.save()
     self.vd2.save()
     self.vd3.save()
     self.ru_other = RealUser(email='*****@*****.**')
     self.ru_other.save()
     self.vd4 = VD(deviceName='test vd 4', realOwner=self.ru_other)
     self.vd4.save()
Ejemplo n.º 18
0
    def test_aid(self):
        vd1 = VD(authOwner=self.user)
        vd1.save()
        vd1_aid = unicode(vd1.aid)
        user2 = User(username='******')
        user2.save()
        vd1.authOwner = user2
        vd1_aid2 = unicode(vd1.aid)

        self.assertGreater(len(vd1_aid), 32)
        self.assertNotEqual(vd1_aid, unicode(vd1.id))
        self.assertNotEqual(vd1_aid2, unicode(vd1.id))
        self.assertEqual(vd1.aid2id(vd1_aid2), vd1.id)
        with self.assertRaises(InvalidToken):
            vd1.aid2id(vd1_aid)
Ejemplo n.º 19
0
 def test_simple_properties(self):
     deviceName = SG('[\w\-]{36}').render()
     deviceTypeName = 'LG-F460L'
     country = 'KR'
     language = 'ko'
     timezone = 'KST'
     vd = VD()
     vd.deviceName = deviceName
     vd.deviceTypeName = deviceTypeName
     vd.country = country
     vd.language = language
     vd.timezone = timezone
     vd.save()
     saved = VD.objects.first()
     self.assertEqual(saved.deviceName, deviceName)
     self.assertEqual(saved.deviceTypeName, deviceTypeName)
     self.assertEqual(saved.country, country)
     self.assertEqual(saved.language, language)
     self.assertEqual(saved.timezone, timezone)
Ejemplo n.º 20
0
    def create(self, request, *args, **kwargs):
        # vd 조회
        vd = self.vd
        if not vd: return Response(status=status.HTTP_401_UNAUTHORIZED)

        # guide 조회
        guide = convert_to_json(request.data['guide'])

        # myself 변환
        if 'vd' in guide and guide['vd'] == 'myself':
            guide['vd'] = vd.id

        # check validation 1
        if 'type' in guide and guide['type'] == 'user':
            ru = RealUser.objects.get(email=guide['email'])
            if ru == self.vd.realOwner:
                return Response(status=status.HTTP_400_BAD_REQUEST)

        # proxy 조회
        try:
            proxy = Proxy.objects.get(guide=guide)
        except Proxy.DoesNotExist:
            vd_publisher = VD()
            # TODO : type 이 images 가 아닌 경우에 대한 구현
            if guide['type'] == 'images':
                vd_publisher.is_private = True
                vd_publisher.is_public = False
                vd_publisher.parent = vd
            vd_publisher.save()
            proxy = Proxy.objects.create(vd=vd_publisher, guide=guide)

        # check validation 2
        if not proxy.vd:
            raise NotImplementedError
        if proxy.vd == vd:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        if proxy.vd.is_private:
            if not proxy.vd.parent:
                raise NotImplementedError
            if proxy.vd.parent != vd:
                return Response(status=status.HTTP_403_FORBIDDEN)

        # importer 생성 및 celery task 처리
        importer, is_created = Importer.objects.get_or_create(publisher=proxy,
                                                              subscriber=vd)
        importer.start(high_priority=is_created)

        # 결과 처리
        serializer = self.get_serializer(importer)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
Ejemplo n.º 21
0
class UserPlaceTest(APITestBase):
    def setUp(self):
        super(UserPlaceTest, self).setUp()
        self.place = Place()
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        self.place.lonLat = point
        self.place.save()
        self.vd = VD()
        self.vd.save()

    def test_save_and_retreive(self):
        uplace = UserPlace(vd=self.vd)
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)

    def test_id_property(self):
        uplace = UserPlace(vd=self.vd)
        self.assertEqual(uplace.id, None)
        timestamp = get_timestamp()
        uplace.save()
        self.assertNotEqual(uplace.id, None)
        self.assertAlmostEqual((int(uplace.id) >> 8 * 8) & BIT_ON_8_BYTE,
                               timestamp,
                               delta=1000)
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)
        self.assertEqual(saved.id, uplace.id)

        # for timestamp property
        self.assertEqual(uplace.created, uplace.modified)
        self.assertEqual(saved.created, uplace.created)
        self.assertEqual(saved.modified, uplace.modified)
        self.assertAlmostEqual(uplace.created, timestamp, delta=1000)

    def test_id_property_with_timestamp(self):
        uplace = UserPlace(vd=self.vd)
        timestamp = get_timestamp()
        uplace.save(timestamp=timestamp)
        self.assertEqual((int(uplace.id) >> 8 * 8) & BIT_ON_8_BYTE, timestamp)
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = UserPlace.objects.first()
        self.assertEqual(saved, uplace)
        self.assertEqual(saved.id, uplace.id)

    def test_id_property_with_no_vd(self):
        uplace = UserPlace()
        uplace.save()
        self.assertEqual((int(uplace.id) >> 2 * 8) & BIT_ON_6_BYTE, 0)

    def test_non_unique_vd_place(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        uplace2 = UserPlace(vd=self.vd, place=self.place)
        uplace2.save()
        self.assertNotEqual(uplace, uplace2)
        self.assertEqual(uplace.place, uplace2.place)

    def test_get_or_create(self):
        uplace, is_created = UserPlace.objects.get_or_create(vd=self.vd,
                                                             place=self.place)
        self.assertEqual(is_created, True)
        uplace2, is_created = UserPlace.objects.get_or_create(vd=self.vd,
                                                              place=self.place)
        self.assertEqual(is_created, False)
        self.assertEqual(uplace, uplace2)

    def test_created_modified(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        self.assertEqual(uplace.created, None)
        self.assertEqual(uplace.modified, None)
        uplace.save()
        t1 = uplace.modified
        self.assertNotEqual(t1, None)
        self.assertEqual(uplace.created, t1)
        self.assertAlmostEqual(t1, get_timestamp(), delta=1000)
        uplace.save()
        self.assertGreater(uplace.modified, t1)
        self.assertAlmostEqual(uplace.modified, t1, delta=1000)
        self.assertEqual(uplace.created, t1)
        t2 = get_timestamp()
        uplace.save(timestamp=t2)
        self.assertEqual(uplace.modified, t2)
        self.assertEqual(uplace.created, t1)

    def test_lonLat_column(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        point2 = GEOSGeometry('POINT(127.107316 37.400998)', srid=4326)
        qs1 = UserPlace.objects.filter(place__lonLat__distance_lte=(point2,
                                                                    D(m=100)))
        self.assertEqual(len(qs1), 0)
        qs2 = UserPlace.objects.filter(place__lonLat__distance_lte=(point2,
                                                                    D(m=1000)))
        self.assertEqual(len(qs2), 1)
        qs3 = UserPlace.objects.filter(lonLat__distance_lte=(point2, D(m=100)))
        self.assertEqual(len(qs3), 0)
        qs4 = UserPlace.objects.filter(vd_id=self.vd.id).filter(
            lonLat__distance_lte=(point2, D(m=1000)))
        self.assertEqual(len(qs4), 1)
        qs5 = UserPlace.objects.filter(vd_id=0).filter(
            lonLat__distance_lte=(point2, D(m=1000)))
        self.assertEqual(len(qs5), 0)

    def test_mask(self):
        uplace = UserPlace(vd=self.vd, place=self.place)
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_drop = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 0 | 1)
        uplace.is_drop = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_hard2placed = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hard2placed, True)
        self.assertEqual(saved.mask, 0 | 2)
        uplace.is_hard2placed = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hard2placed, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_hurry2placed = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hurry2placed, True)
        self.assertEqual(saved.mask, 0 | 4)
        uplace.is_hurry2placed = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_hurry2placed, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_parent = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_parent, True)
        self.assertEqual(saved.mask, 0 | 8)
        uplace.is_parent = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_parent, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_empty = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_empty, True)
        self.assertEqual(saved.mask, 0 | 16)
        uplace.is_empty = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_empty, False)
        self.assertEqual(saved.mask, 0 | 0)

        uplace.is_bounded = True
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_bounded, True)
        self.assertEqual(saved.mask, 0 | 32)
        uplace.is_bounded = False
        uplace.save()
        saved = UserPlace.objects.first()
        self.assertEqual(saved.is_bounded, False)
        self.assertEqual(saved.mask, 0 | 0)

    def test_get_from_post(self):
        vd_other = VD.objects.create()
        place_other = Place.objects.create()
        uplace1 = UserPlace.objects.create(vd=vd_other, place=self.place)
        uplace2 = UserPlace.objects.create(vd=self.vd, place=place_other)
        uplace3 = UserPlace.objects.create(vd=self.vd, place=self.place)
        pb = PostBase()
        pb.place_id = self.place.id
        ru = RealUser.objects.create(email='*****@*****.**')
        self.vd.realOwner = ru
        self.vd.save()
        vd_mine = VD.objects.create(realOwner=ru)
        uplace_check, is_created = UserPlace.get_or_create_smart(pb, vd_mine)
        self.assertNotEqual(uplace1, uplace_check)
        self.assertNotEqual(uplace2, uplace_check)
        self.assertEqual(uplace3, uplace_check)

    def test_origin(self):
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        uplace = UserPlace.objects.create(vd=self.vd, lonLat=point)
        uplace.origin = point
        self.assertEqual(uplace.origin, point)
        self.assertEqual(UserPlace.objects.count(), 1)
        uplace2 = UserPlace.objects.first()
        self.assertEqual(uplace2.origin, None)

    def test_distance_from_origin(self):
        point = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        uplace = UserPlace.objects.create(vd=self.vd, lonLat=point)
        self.assertEqual(uplace.distance_from_origin, None)
        uplace.origin = point
        self.assertEqual(uplace.distance_from_origin, '0m')

        point2 = GEOSGeometry('POINT(127.107316 37.400998)', srid=4326)
        uplace.origin = point2
        self.assertEqual(uplace.distance_from_origin, '350m')

        point3 = GEOSGeometry('POINT(127.0 37.0)', srid=4326)
        uplace.origin = point3
        self.assertEqual(uplace.distance_from_origin, '45.3km')

    def test_aid(self):
        uplace = UserPlace.objects.create()
        aid = uplace.aid
        id = UserPlace.aid2id(aid)
        self.assertEqual(id, uplace.id)

    def _skip_test_shorten_url(self):
        place = Place.objects.create()
        uplace = UserPlace.objects.create(place=place)
        self.assertEqual(uplace.shorten_url, None)
        uplace.make_shorten_url()
        self.assertNotEqual(uplace.shorten_url, None)
        self.assertEqual(uplace.shorten_url.startswith('http://goo.gl/'), True)
Ejemplo n.º 22
0
class PostPieceTest(APITestBase):
    def setUp(self):
        super(PostPieceTest, self).setUp()
        self.place = Place()
        self.place.save()
        self.uplace = UserPlace()
        self.uplace.save()
        self.vd = VD()
        self.vd.save()

        self.image, is_created = Image.get_or_create_smart(
            'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        )
        self.url, is_created = Url.get_or_create_smart('http://www.naver.com/')

        self.lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        self.addr, is_created = Address.get_or_create_smart(
            '경기도 하남시 풍산로 270, 206동 402호 (선동, 미사강변도시2단지)')
        self.phone, is_created = PhoneNumber.get_or_create_smart(
            '010-5597-9245')

    def test_save_and_retreive(self):
        pp = PostPiece()
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)

    def test_id_property(self):
        pp = PostPiece(vd=self.vd)
        self.assertEqual(pp.id, None)
        timestamp = get_timestamp()
        pp.save()
        self.assertNotEqual(pp.id, None)
        self.assertAlmostEqual((int(pp.id) >> 8 * 8) & BIT_ON_8_BYTE,
                               timestamp,
                               delta=1000)
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.id, pp.id)

        # for timestamp property
        self.assertEqual(saved.timestamp, pp.timestamp)
        self.assertAlmostEqual(pp.timestamp, timestamp, delta=1000)

    def test_id_property_with_timestamp(self):
        pp = PostPiece(vd=self.vd)
        timestamp = get_timestamp()
        pp.save(timestamp=timestamp)
        self.assertEqual((int(pp.id) >> 8 * 8) & BIT_ON_8_BYTE, timestamp)
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, self.vd.id)
        saved = PostPiece.objects.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.id, pp.id)

    def test_id_property_with_no_vd(self):
        pp = PostPiece()
        pp.save()
        self.assertEqual((int(pp.id) >> 2 * 8) & BIT_ON_6_BYTE, 0)

    def test_uplace_property(self):
        pp = PostPiece()
        pp.uplace = self.uplace
        pp.save()
        saved = self.uplace.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.uplace, pp.uplace)
        self.assertEqual(saved.place, None)

    def test_place_property(self):
        pp = PostPiece()
        pp.place = self.place
        pp.save()
        saved = self.place.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.place, pp.place)

        self.uplace.place = self.place
        self.uplace.save()
        pp2 = PostPiece()
        pp2.uplace = self.uplace
        self.assertEqual(pp2.place, None)
        pp2.save()
        self.assertEqual(pp2.place, self.place)

    def test_vd_property(self):
        pp = PostPiece()
        pp.vd = self.vd
        pp.save()
        saved = self.vd.pps.first()
        self.assertEqual(saved, pp)
        self.assertEqual(saved.vd, pp.vd)

    def test_data_property(self):
        # TODO : json 에 대한 query 테스트 추가
        uplace = UserPlace.objects.create()
        pp = PostPiece(uplace=uplace)
        json_add = json_loads('''
            {
                "lonLat": {"lon": 127.1037430, "lat": 37.3997320},
                "images": [{"content": "http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg"}],
                "addr1": {"content": "경기도 성남시 분당구 판교로 256번길 25"},
                "addr2": {"content": "경기도 성남시 분당구 삼평동 631"},
                "addr3": {"content": "경기도 성남시 분당구 삼평동"},
                "urls": [{"content": "http://place.kakao.com/places/15738374"}]
            }
        ''')
        pp.data = json_add
        pp.vd = self.vd
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(json_add, pp.data)
        self.assertEqual(json_add, saved.data)
        self.assertEqual(pp.pb.image.vd, pp.vd)
        self.assertEqual(pp.pb.url.vd, pp.vd)

        pp2 = PostPiece()
        pb = PostBase(json_add)
        pp2.pb = pb
        pp2.save()
        saved = PostPiece.objects.order_by('-id').first()
        self.assertEqual(pp2, saved)
        self.assertDictEqual(pp2.pb.json, saved.pb.json)
        self.assertDictEqual(pp2.pb.cjson, saved.pb.cjson)
        self.assertDictEqual(pb.json, saved.pb.json)
        self.assertDictEqual(pb.cjson, saved.pb.cjson)
        self.assertEqual(pp2.pb.image.vd, pp2.vd)
        self.assertEqual(pp2.pb.url.vd, pp2.vd)

    def test_mask(self):
        pp = PostPiece()
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 0)

        pp.is_remove = True
        pp.by_MAMMA = False
        pp.is_drop = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, True)
        self.assertEqual(saved.is_add, False)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 4 | 0 | 1)

        pp.is_remove = False
        pp.by_MAMMA = True
        pp.is_drop = False
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, True)
        self.assertEqual(saved.is_drop, False)
        self.assertEqual(saved.mask, 0 | 2 | 0)

        pp.by_MAMMA = False
        pp.is_drop = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_remove, False)
        self.assertEqual(saved.is_add, True)
        self.assertEqual(saved.by_MAMMA, False)
        self.assertEqual(saved.is_drop, True)
        self.assertEqual(saved.mask, 4 | 0 | 0)

        pp.mask = 0
        pp.is_bounded = True
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_bounded, True)
        self.assertEqual(saved.mask, 0 | 8)
        pp.is_bounded = False
        pp.save()
        saved = PostPiece.objects.first()
        self.assertEqual(saved.is_bounded, False)
        self.assertEqual(saved.mask, 0 | 0)
Ejemplo n.º 23
0
    def test_mask(self):
        vd = VD()
        vd.save()
        saved = VD.objects.first()
        self.assertEqual(saved.is_private, False)
        self.assertEqual(saved.is_public, False)
        self.assertEqual(saved.mask, 0 | 0)

        vd.is_private = True
        vd.is_public = False
        vd.save()
        saved = VD.objects.first()
        self.assertEqual(saved.is_private, True)
        self.assertEqual(saved.is_public, False)
        self.assertEqual(saved.mask, 0 | 1)

        vd.is_private = False
        vd.is_public = True
        vd.save()
        saved = VD.objects.first()
        self.assertEqual(saved.is_private, False)
        self.assertEqual(saved.is_public, True)
        self.assertEqual(saved.mask, 2 | 0)
Ejemplo n.º 24
0
    def test_post(self):
        place = Place()
        place.save()
        vd1 = VD()
        vd1.save()
        uplace1 = UserPlace(vd=vd1, place=place)
        uplace1.save()
        point1 = GEOSGeometry('POINT(127 37)', srid=4326)
        name1, is_created = PlaceName.get_or_create_smart('능라')
        addr1, is_created = Address.get_or_create_smart(
            '경기도 성남시 분당구 운중동 883-3')
        note11, is_created = PlaceNote.get_or_create_smart('분당 냉면 최고')
        note12, is_created = PlaceNote.get_or_create_smart('만두도 괜찮음')
        imgNote1, is_created = ImageNote.get_or_create_smart('냉면 사진')
        img1_content = 'http://blogthumb2.naver.net/20160302_285/mardukas_1456922688406bYGAH_JPEG/DSC07301.jpg'
        img1, is_created = Image.get_or_create_smart(img1_content)
        phone1, is_created = PhoneNumber.get_or_create_smart('010-5686-1613')

        vd2 = VD()
        vd2.save()
        uplace2 = UserPlace(vd=vd2, place=place)
        uplace2.save()
        point2 = GEOSGeometry('POINT(127.1037430 37.3997320)', srid=4326)
        name2, is_created = PlaceName.get_or_create_smart('능라도')
        addr2, is_created = Address.get_or_create_smart(
            '경기도 성남시 분당구 산운로32번길 12')
        note21, is_created = PlaceNote.get_or_create_smart('여기 가게 바로 옆으로 이전')
        note22, is_created = PlaceNote.get_or_create_smart('평양냉면 맛집')
        img21_content = 'http://blogpfthumb.phinf.naver.net/20100110_16/mardukas_1263055491560_VI01Ic_JPG/DSCN1968.JPG'
        img22_content = 'http://mblogthumb3.phinf.naver.net/20160807_298/mardukas_14705287064440EYVC_JPEG/DSC03530.JPG?type=w800'
        img21, is_created = Image.get_or_create_smart(img21_content)
        img22, is_created = Image.get_or_create_smart(img22_content)
        imgNote2, is_created = ImageNote.get_or_create_smart('만두 사진')
        url2, is_created = Url.get_or_create_smart('http://www.naver.com/')
        lp, is_created = LegacyPlace.get_or_create_smart(
            '4ccffc63f6378cfaace1b1d6.4square')
        phone2, is_created = PhoneNumber.get_or_create_smart('010-5597-9245')

        json_userPost = '''
            {
                "lonLat": {"lon": %f, "lat": %f},
                "name": {"uuid": "%s", "content": "%s"},
                "addr2": {"uuid": "%s", "content": "%s"},
                "notes": [{"uuid": "%s", "content": "%s"}, {"uuid": "%s", "content": "%s"}],
                "images": [{"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}}],
                "urls": [],
                "lps": [],
                "phone": {"uuid": "%s", "content": "%s"}
            }
        ''' % (
            point1.x,
            point1.y,
            name1.uuid,
            name1.content,
            addr1.uuid,
            addr1.content,
            note12.uuid,
            note12.content,
            note11.uuid,
            note11.content,
            img1.uuid,
            img1.content,
            imgNote1.uuid,
            imgNote1.content,
            phone1.uuid,
            phone1.content,
        )
        json_placePost = '''
            {
                "lonLat": {"lon": %f, "lat": %f},
                "name": {"uuid": "%s", "content": "%s"},
                "addr1": {"uuid": "%s", "content": "%s"},
                "addr2": {"uuid": "%s", "content": "%s"},
                "notes": [
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"},
                    {"uuid": "%s", "content": "%s"}
                ],
                "images": [
                    {"uuid": "%s", "content": "%s", "note": null},
                    {"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}},
                    {"uuid": "%s", "content": "%s", "note": {"uuid": "%s", "content": "%s"}}
                ],
                "urls": [{"uuid": "%s", "content": "%s"}],
                "lps": [{"uuid": "%s", "content": "%s"}],
                "phone": {"uuid": "%s", "content": "%s"}
            }
        ''' % (
            point2.x,
            point2.y,
            name2.uuid,
            name2.content,
            addr2.uuid,
            addr2.content,
            addr1.uuid,
            addr1.content,
            note22.uuid,
            note22.content,
            note21.uuid,
            note21.content,
            note12.uuid,
            note12.content,
            note11.uuid,
            note11.content,
            img22.uuid,
            img22.content,
            img21.uuid,
            img21.content,
            imgNote2.uuid,
            imgNote2.content,
            img1.uuid,
            img1.content,
            imgNote1.uuid,
            imgNote1.content,
            url2.uuid,
            url2.content,
            lp.uuid,
            lp.content,
            phone2.uuid,
            phone2.content,
        )
        pb1 = PostBase(json_userPost)
        pb2 = PostBase(json_placePost)
        self.assertEqual(PostPiece.objects.count(), 0)
        pp1 = PostPiece.create_smart(uplace1, pb1)
        self.assertEqual(PostPiece.objects.count(), 1)
        pp2 = PostPiece.create_smart(uplace2, pb2)
        pp3 = PostPiece.create_smart_4place(place, vd1, pb2, by_MAMMA=True)
        self.assertEqual(PostPiece.objects.count(), 3)

        want_userPost = json_loads(json_userPost)
        want_placePost = json_loads(json_placePost)

        self.assertNotIn('timestamp', uplace1.userPost.json['lonLat'])
        self.assertNotIn('timestamp', uplace1.userPost.json['name'])
        self.assertIn('timestamp', uplace1.userPost.json['notes'][0])
        self.assertNotIn('timestamp', uplace1.userPost.json['images'][0])
        self.assertIn('timestamp', uplace1.userPost.json['images'][0]['note'])

        self.assertNotIn('timestamp', uplace2.userPost.json['urls'][0])
        self.assertNotIn('timestamp', uplace2.userPost.json['lps'][0])
        timestamp = uplace1.userPost.json['notes'][0]['timestamp']
        self.assertAlmostEqual(get_timestamp(), timestamp, delta=1000)
        self.assertIn('summary', uplace1.userPost.json['images'][0])
        self.assertIn('phone', uplace1.userPost.json)
        self.assertNotEqual(uplace1.userPost.json['images'][0]['content'],
                            None)

        self.assertIsSubsetOf(want_userPost, uplace1.userPost)
        self.assertIsNotSubsetOf(uplace1.userPost, want_userPost)

        self.assertIsSubsetOf(want_placePost, uplace1.place.placePost)
        self.assertIsNotSubsetOf(uplace1.place.placePost, want_placePost)
        uplace1._clearCache()
        p1 = uplace1.place.placePost
        uplace2._clearCache()
        p2 = uplace2.place.placePost
        place._clearCache()
        p3 = place.placePost
        self.assertDictEqual(p1.json, p3.json)
        self.assertDictEqual(p2.json, p3.json)

        pb12 = PostBase(json_userPost)
        pb12.update(pb1)
        self.assertNotEqual(pb12.json, pb1.json)
        pb12.normalize()
        self.assertEqual(pb12.json, pb1.json)

        pb13 = PostBase(json_userPost)
        pb13.update(pb1)
        pb13.update(pb1, add=False)
        pb_null = PostBase()
        self.assertEqual(pb13.json, pb_null.json)

        totalPost = place._totalPost
        self.assertIsSubsetOf(uplace1.place.placePost, totalPost)
        #self.assertIsSubsetOf(uplace1.userPost, totalPost)     # Note 에서 timestamp 를 제거해야...
        #self.assertIsSubsetOf(uplace2.userPost, totalPost)     # 상동
        #self.assertIsNotSubsetOf(totalPost, uplace1.place.placePost)   # userPost 를 하나 더 생성해야...

        # child/parent test
        uplace3 = UserPlace.objects.create(parent=uplace1)
        self.assertEqual(uplace3.parent, uplace1)
        self.assertNotEqual(uplace3.userPost, uplace1.userPost)
        self.printJson(uplace3.userPost.json)
        self.printJson(uplace1.userPost.json)
        self.assertEqual(uplace3.userPost.json, uplace1.userPost.json)
        uplace1._clearCache()
        uplace3._clearCache()
        pb3 = PostBase('{"notes": [{"content": "child"}]}')
        pp3 = PostPiece.create_smart(uplace3, pb3)
        self.assertNotEqual(uplace3.userPost, uplace1.userPost)
        self.assertNotEqual(uplace3.userPost.json, uplace1.userPost.json)

        place4 = Place.objects.create()
        uplace4 = UserPlace.objects.create(parent=uplace1,
                                           vd=vd1,
                                           place=place4)
        self.assertEqual(uplace4.parent, uplace1)
        self.assertNotEqual(uplace4.userPost, uplace1.userPost)
        self.assertEqual(uplace4.userPost.json, uplace1.userPost.json)
        uplace1._clearCache()
        uplace4._clearCache()
        pb3 = PostBase('{"notes": [{"content": "child"}]}')
        pp3 = PostPiece.create_smart(uplace4, pb3)
        self.assertNotEqual(uplace4.userPost, uplace1.userPost)
        self.assertNotEqual(uplace4.userPost.json, uplace1.userPost.json)
Ejemplo n.º 25
0
class BasicImporterViewSetTest(FunctionalTestAfterLoginBase):
    def setUp(self):
        super(BasicImporterViewSetTest, self).setUp()
        self.vd_publisher = VD()
        self.vd_publisher.save()
        self.proxy = Proxy()
        self.proxy.vd = self.vd_publisher
        self.proxy.save()
        self.vd_subscriber = VD.objects.get(id=self.vd_id)
        self.imp = Importer()
        self.imp.publisher = self.proxy
        self.imp.subscriber = self.vd_subscriber
        self.imp.save()

    def test_list(self):
        response = self.client.get('/importers/')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_detail(self):
        response = self.client.get('/importers/%s/' % self.imp.id)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_create_images1_basic(self):
        guide_json = '{"type": "images", "vd": "myself"}'
        response = self.client.post('/importers/', dict(guide=guide_json))
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_create_images2_twice(self):
        guide_json = '{"type": "images", "vd": "myself"}'
        response = self.client.post('/importers/', dict(guide=guide_json))
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Proxy.objects.count(), 2)
        self.assertEqual(Importer.objects.count(), 2)
        proxy = Proxy.objects.first()

        response = self.client.post('/importers/', dict(guide=guide_json))
        self.assertEqual(Proxy.objects.count(), 2)
        self.assertEqual(Importer.objects.count(), 2)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_create_images3_importer_self(self):
        self.assertEqual(Proxy.objects.count(), 1)
        guide_json2 = '{"type": "images", "vd": %d}' % self.vd_subscriber.id
        proxy = Proxy.objects.create(vd=self.vd_subscriber, guide=guide_json2)
        self.assertEqual(Proxy.objects.count(), 2)
        response = self.client.post('/importers/', dict(guide=guide_json2))
        self.assertEqual(Proxy.objects.count(), 2)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

    def test_create_images4_importer_private(self):
        self.assertEqual(Proxy.objects.count(), 1)
        guide_json2 = '{"type": "images", "vd": %d}' % self.vd_subscriber.id
        vd = VD()
        vd.is_private = True
        _vd = VD()
        _vd.save()
        vd.parent = _vd
        vd.save()
        proxy = Proxy.objects.create(vd=vd, guide=guide_json2)
        self.assertEqual(Proxy.objects.count(), 2)
        response = self.client.post('/importers/', dict(guide=guide_json2))
        self.assertEqual(Proxy.objects.count(), 2)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Ejemplo n.º 26
0
 def test_save_and_retreive(self):
     vd = VD()
     vd.save()
     saved = VD.objects.first()
     self.assertEqual(saved, vd)