Skip to content

Commit 122d3b7

Browse files
committed
Fix all tests, remove duplicated 'file' field for vectors
Signed-off-by: Nir Izraeli <nirizr@gmail.com>
1 parent 9e1412d commit 122d3b7

File tree

4 files changed

+27
-23
lines changed

4 files changed

+27
-23
lines changed

server/collab/models.py

-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ class Vector(models.Model):
8585
(TYPE_MNEMONIC_HIST, "Mnemonic Hist")]
8686

8787
instance = models.ForeignKey(Instance, related_name='vectors')
88-
file = models.ForeignKey(File, related_name='vectors')
8988
file_version = models.ForeignKey(FileVersion, related_name='vectors')
9089
type = models.CharField(max_length=16, choices=TYPE_CHOICES)
9190
type_version = models.IntegerField()

server/collab/serializers.py

-4
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,6 @@ class Meta:
127127
fields = ('id', 'file', 'file_version', 'instance', 'type', 'type_version',
128128
'data')
129129

130-
def create(self, validated_data):
131-
file = validated_data['file_version'].file
132-
return self.Meta.model.objects.create(file=file, **validated_data)
133-
134130

135131
class MatchSerializer(serializers.ModelSerializer):
136132
class Meta:

server/collab/tasks.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def match(task_id):
2929
task.update(status=Task.STATUS_STARTED, progress=0,
3030
progress_max=len(requested_matchers), task_id=match.request.id)
3131

32-
source_filter = {'file_id': source_file,
32+
source_filter = {'file_version__file': source_file,
3333
'file_version_id': source_file_version}
3434
if source_start:
3535
source_filter['instance__offset__gte'] = source_start
@@ -39,11 +39,12 @@ def match(task_id):
3939

4040
target_filter = {}
4141
if target_project:
42-
target_filter = {'file__project_id': target_project}
42+
target_filter = {'file_version__file__project_id': target_project}
4343
elif target_file:
44-
target_filter = {'file_id': target_file}
44+
target_filter = {'file_version__file': target_file}
4545
base_target_vectors = Vector.objects.filter(**target_filter)
46-
base_target_vectors = base_target_vectors.exclude(file_id=source_file)
46+
self_exclude = {'file_version__file': source_file}
47+
base_target_vectors = base_target_vectors.exclude(**self_exclude)
4748

4849
print("Running task {}".format(match.request.id))
4950
# TODO: order might be important here

tests/server/collab/test_all.py

+22-14
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88

99
import random
1010
import json
11+
import inspect
12+
import datetime
1113

1214

1315
try:
1416
strtypes = (str, unicode)
15-
except:
17+
except NameError:
1618
strtypes = str
1719

1820

@@ -63,8 +65,7 @@ def rand_hash(n):
6365
'source_file_version': 'file_versions'},
6466
'instances': {'file_version': 'file_versions'},
6567
'vectors': {'instance': 'instances',
66-
'file_version': 'file_versions',
67-
'file': 'files'}}
68+
'file_version': 'file_versions'}}
6869

6970

7071
def resolve_reqs(model_name, user):
@@ -110,35 +111,42 @@ def setup_model(model_name, user):
110111

111112

112113
def assert_eq(a, b):
113-
import inspect, datetime
114114
print(a, b)
115115
if isinstance(a, list) and isinstance(b, list):
116116
assert len(a) == len(b)
117117
for a_item, b_item in zip(a, b):
118118
assert_eq(a_item, b_item)
119119
elif isinstance(a, dict) and isinstance(b, dict):
120120
for k in b:
121-
assert a[k] == b[k]
122-
elif type(a) == type(b):
123-
assert a == b
121+
assert_eq(a[k], b[k])
122+
elif isinstance(a, datetime.datetime):
123+
assert_eq(a.replace(microsecond=0, tzinfo=None), b)
124+
elif isinstance(b, datetime.datetime):
125+
assert_eq(a, b.replace(microsecond=0, tzinfo=None))
124126
elif isinstance(b, dict) and (isinstance(a, models.Model) or
125127
inspect.isclass(a)):
126128
assert_eq(b, a)
127129
elif isinstance(a, dict) and (isinstance(b, models.Model) or
128130
inspect.isclass(b)):
129131
for k in a:
130-
b_value = getattr(b, k)
132+
# TODO: serializer-added values cannot be validated, so we'll have to
133+
# ignore any attribute that does not exist in Model object
134+
if not hasattr(b, k):
135+
print("Ignoring missing model parameter: {} in {}".format(k, b))
136+
continue
131137
a_value = a.__getitem__(k)
138+
b_value = getattr(b, k)
132139
assert_eq(a_value, b_value)
133-
#elif isinstance(b, datetime.datetime):
134-
# assert_eq(a, b.isoformat().replace('+00:00', 'Z'))
135-
elif isinstance(b, models.Model):
140+
elif isinstance(b, datetime.datetime):
141+
assert_eq(a, b.isoformat())
142+
elif isinstance(a, (int, long)) and isinstance(b, models.Model):
136143
assert_eq(a, b.id)
144+
elif isinstance(a, strtypes) and isinstance(b, models.Model):
145+
assert_eq(a, b.username)
146+
elif b.__class__.__name__ == 'RelatedManager':
147+
assert_eq(a, list(b.all()))
137148
else:
138-
print(type(a), type(b))
139149
assert a == b
140-
#raise Exception("Cannot assert equality between types {} and {}"
141-
# .format(type(a), type(b)))
142150

143151

144152
def assert_response(response, status, data=None):

0 commit comments

Comments
 (0)