Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Commit

Permalink
Add test for removing user course
Browse files Browse the repository at this point in the history
  • Loading branch information
mduan committed Aug 5, 2014
1 parent 19f7a95 commit 9aa7d4c
Show file tree
Hide file tree
Showing 17 changed files with 76 additions and 4 deletions.
67 changes: 67 additions & 0 deletions server/server_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import json

import werkzeug.datastructures as datastructures

import rmc.models as m
import rmc.test.lib as testlib


class ServerTest(testlib.FlaskTestCase):
def tearDown(self):
# Clear DB for other tests
super(ServerTest, self).tearDown()

def get_csrf_token_header(self):
resp = self.app.get('/api/v1/csrf-token')
headers = datastructures.Headers()
headers.add('X-CSRF-Token', json.loads(resp.get_data())['token'])
return headers

def test_remove_user_course(self):
data = {
'user_id': '53d28ad4c4866e68b440f113',
'api_key': 'qwerty123',
'term_id': '2014_09',
'course_id': 'math137',
}

orig_usi_count = m.UserScheduleItem.objects.count()

self.assertEquals(m.UserCourse.objects(
user_id=data['user_id'],
term_id=data['term_id'],
course_id=data['course_id'],
).count(), 1)

self.assertEquals(m.UserScheduleItem.objects(
user_id=data['user_id'],
term_id=data['term_id'],
course_id=data['course_id'],
).count(), 38)

self.assertEquals(
len(m.User.objects.with_id(data['user_id']).course_history), 52)

headers = self.get_csrf_token_header()
resp = self.app.post(
'/api/user/remove_course', data=data, headers=headers)

self.assertResponseOk(resp)

self.assertEquals(m.UserCourse.objects(
user_id=data['user_id'],
term_id=data['term_id'],
course_id=data['course_id'],
).count(), 0)

self.assertEquals(m.UserScheduleItem.objects(
user_id=data['user_id'],
term_id=data['term_id'],
course_id=data['course_id'],
).count(), 0)

self.assertEquals(
orig_usi_count - m.UserScheduleItem.objects.count(), 38)

self.assertEquals(
len(m.User.objects.with_id(data['user_id']).course_history), 51)
2 changes: 1 addition & 1 deletion test/fixtures/dump/rmc_test/course.metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{indexes:[{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc.course", "name" : "_id_" }, { "v" : 1, "key" : { "_keywords" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_keywords_1" }, { "v" : 1, "key" : { "_types" : 1, "interest.rating" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_interest.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "interest.count" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_interest.count_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.rating" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_easiness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.count" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_easiness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "usefulness.rating" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_usefulness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "usefulness.count" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_usefulness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "overall.rating" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_overall.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "overall.count" : 1 }, "ns" : "rmc.course", "background" : false, "name" : "_types_1_overall.count_1" }]}
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.course", "name" : "_id_" }, { "v" : 1, "key" : { "_keywords" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_keywords_1" }, { "v" : 1, "key" : { "_types" : 1, "interest.rating" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_interest.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "interest.count" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_interest.count_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.rating" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_easiness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.count" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_easiness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "usefulness.rating" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_usefulness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "usefulness.count" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_usefulness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "overall.rating" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_overall.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "overall.count" : 1 }, "ns" : "rmc_test.course", "background" : false, "name" : "_types_1_overall.count_1" } ] }
2 changes: 1 addition & 1 deletion test/fixtures/dump/rmc_test/department.metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{indexes:[{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc.department", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1 }, "ns" : "rmc.department", "background" : false, "name" : "_types_1" }]}
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.department", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1 }, "ns" : "rmc_test.department", "background" : false, "name" : "_types_1" } ] }
Empty file.
1 change: 1 addition & 0 deletions test/fixtures/dump/rmc_test/exam.metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.exam", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1, "course_id" : 1 }, "ns" : "rmc_test.exam", "background" : false, "name" : "_types_1_course_id_1" } ] }
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.failed_schedule_item", "name" : "_id_" }, { "v" : 1, "key" : { "user_id" : 1, "course_id" : 1, "parsed_date" : 1 }, "unique" : true, "ns" : "rmc_test.failed_schedule_item", "name" : "user_id_1_course_id_1_parsed_date_1", "background" : false, "dropDups" : false }, { "v" : 1, "key" : { "_types" : 1, "user_id" : 1 }, "ns" : "rmc_test.failed_schedule_item", "background" : false, "name" : "_types_1_user_id_1" }, { "v" : 1, "key" : { "_types" : 1, "parsed_date" : 1 }, "ns" : "rmc_test.failed_schedule_item", "background" : false, "name" : "_types_1_parsed_date_1" } ] }
Binary file modified test/fixtures/dump/rmc_test/professor.bson
Binary file not shown.
2 changes: 1 addition & 1 deletion test/fixtures/dump/rmc_test/professor.metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{indexes:[{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc.professor", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1, "clarity.rating" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_clarity.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "clarity.count" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_clarity.count_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.rating" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_easiness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.count" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_easiness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "passion.rating" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_passion.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "passion.count" : 1 }, "ns" : "rmc.professor", "background" : false, "name" : "_types_1_passion.count_1" }]}
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.professor", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1, "clarity.rating" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_clarity.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "clarity.count" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_clarity.count_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.rating" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_easiness.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "easiness.count" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_easiness.count_1" }, { "v" : 1, "key" : { "_types" : 1, "passion.rating" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_passion.rating_1" }, { "v" : 1, "key" : { "_types" : 1, "passion.count" : 1 }, "ns" : "rmc_test.professor", "background" : false, "name" : "_types_1_passion.count_1" } ] }
2 changes: 1 addition & 1 deletion test/fixtures/dump/rmc_test/section.metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc.section", "name" : "_id_" }, { "v" : 1, "key" : { "course_id" : 1, "term_id" : 1, "section_type" : 1, "section_num" : 1 }, "unique" : true, "ns" : "rmc.section", "name" : "course_id_1_term_id_1_section_type_1_section_num_1", "background" : false, "dropDups" : false }, { "v" : 1, "key" : { "_types" : 1, "course_id" : 1, "term_id" : 1 }, "ns" : "rmc.section", "background" : false, "name" : "_types_1_course_id_1_term_id_1" } ] }
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.section", "name" : "_id_" }, { "v" : 1, "key" : { "course_id" : 1, "term_id" : 1, "section_type" : 1, "section_num" : 1 }, "unique" : true, "ns" : "rmc_test.section", "name" : "course_id_1_term_id_1_section_type_1_section_num_1", "background" : false, "dropDups" : false }, { "v" : 1, "key" : { "_types" : 1, "course_id" : 1, "term_id" : 1 }, "ns" : "rmc_test.section", "background" : false, "name" : "_types_1_course_id_1_term_id_1" } ] }
Binary file added test/fixtures/dump/rmc_test/system.indexes.bson
Binary file not shown.
Binary file added test/fixtures/dump/rmc_test/user.bson
Binary file not shown.
1 change: 1 addition & 0 deletions test/fixtures/dump/rmc_test/user.metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.user", "name" : "_id_" }, { "v" : 1, "key" : { "_types" : 1, "fb_access_token" : 1 }, "ns" : "rmc_test.user", "background" : false, "name" : "_types_1_fb_access_token_1" }, { "v" : 1, "key" : { "_types" : 1, "fbid" : 1 }, "ns" : "rmc_test.user", "background" : false, "name" : "_types_1_fbid_1" }, { "v" : 1, "key" : { "_types" : 1, "api_key" : 1 }, "ns" : "rmc_test.user", "background" : false, "name" : "_types_1_api_key_1" }, { "v" : 1, "key" : { "email" : 1 }, "unique" : true, "ns" : "rmc_test.user", "name" : "email_1", "background" : false, "sparse" : true }, { "v" : 1, "key" : { "_types" : 1, "referrer_id" : 1 }, "ns" : "rmc_test.user", "background" : false, "name" : "_types_1_referrer_id_1" } ] }
Binary file added test/fixtures/dump/rmc_test/user_course.bson
Binary file not shown.
1 change: 1 addition & 0 deletions test/fixtures/dump/rmc_test/user_course.metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.user_course", "name" : "_id_" }, { "v" : 1, "key" : { "user_id" : 1, "course_id" : 1, "term_id" : 1 }, "unique" : true, "ns" : "rmc_test.user_course", "name" : "user_id_1_course_id_1_term_id_1", "background" : false, "dropDups" : false }, { "v" : 1, "key" : { "_types" : 1, "user_id" : 1 }, "ns" : "rmc_test.user_course", "background" : false, "name" : "_types_1_user_id_1" }, { "v" : 1, "key" : { "_types" : 1, "course_id" : 1 }, "ns" : "rmc_test.user_course", "background" : false, "name" : "_types_1_course_id_1" }, { "v" : 1, "key" : { "_types" : 1, "professor_id" : 1 }, "ns" : "rmc_test.user_course", "background" : false, "name" : "_types_1_professor_id_1" } ] }
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "ns" : "rmc_test.user_schedule_item", "name" : "_id_" }, { "v" : 1, "key" : { "user_id" : 1, "course_id" : 1, "term_id" : 1, "section_type" : 1, "section_num" : 1, "start_date" : 1 }, "unique" : true, "ns" : "rmc_test.user_schedule_item", "name" : "user_id_1_course_id_1_term_id_1_section_type_1_section_num_1_start_date_1", "background" : false, "dropDups" : false }, { "v" : 1, "key" : { "_types" : 1, "user_id" : 1 }, "ns" : "rmc_test.user_schedule_item", "background" : false, "name" : "_types_1_user_id_1" }, { "v" : 1, "key" : { "_types" : 1, "start_date" : 1 }, "ns" : "rmc_test.user_schedule_item", "background" : false, "name" : "_types_1_start_date_1" }, { "v" : 1, "key" : { "_types" : 1, "end_date" : 1 }, "ns" : "rmc_test.user_schedule_item", "background" : false, "name" : "_types_1_end_date_1" } ] }

0 comments on commit 9aa7d4c

Please sign in to comment.