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)
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)
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)
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_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'))
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)
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))
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()
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)
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)
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)
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)
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)
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)
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()
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 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_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)
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)
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)
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)
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)
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)
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)
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)
def test_save_and_retreive(self): vd = VD() vd.save() saved = VD.objects.first() self.assertEqual(saved, vd)