예제 #1
0
def test_get_learning_context(db_conn, users_table):
    """
    Expect to get the learning context.
    """

    users_table.insert({
        'id': 'abcd1234',
        'name': 'Dalton',
        'email': '*****@*****.**',
        'password': '******',
    }).run(db_conn)

    user = User.get(id='abcd1234')

    redis.set('learning_context_abcd1234', json.dumps({
        'card': {'entity_id': 'A'},
        'unit': {'entity_id': 'B'},
        'set': {'entity_id': 'C'},
    }))
    assert user.get_learning_context() == {
        'card': {'entity_id': 'A'},
        'unit': {'entity_id': 'B'},
        'set': {'entity_id': 'C'},
    }

    redis.delete('learning_context_abcd1234')
    assert user.get_learning_context() == {}
예제 #2
0
def test_learn_card(db_conn, session, cards_table):
    """
    Expect to get a card for learn mode. (200)
    """

    cards_table.insert({
        'entity_id':
        'tyui4567',
        'unit_id':
        'vbnm7890',
        'created':
        r.now(),
        'modified':
        r.now(),
        'status':
        'accepted',
        'kind':
        'choice',
        'name':
        'Meaning of Life',
        'body':
        'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order':
        'set',
        'max_options_to_show':
        4,
    }).run(db_conn)

    redis.set(
        'learning_context_abcd1234',
        json.dumps({
            'unit': {
                'entity_id': 'vbnm7890'
            },
            'subject': {
                'entity_id': 'jkl;1234'
            },
        }))

    request = {'cookies': {'session_id': session}, 'db_conn': db_conn}
    code, response = routes.card.learn_card_route(request, 'tyui4567')
    assert code == 200
    assert 'order' not in response['card']
    # TODO-3 assert 'correct' not in response['card']['options'][0]
    # TODO-3 assert 'feedback' not in response['card']['options'][0]
    assert 'subject' in response
    assert 'unit' in response

    redis.delete('learning_context_abcd1234')
예제 #3
0
def test_respond_card(db_conn, units_table, cards_table,
                      cards_parameters_table,
                      responses_table, session):
    """
    Expect to respond to a card. (200)
    """

    cards_table.insert({
        'entity_id': 'tyui4567',
        'unit_id': 'vbnm7890',
        'created': r.now(),
        'modified': r.now(),
        'status': 'accepted',
        'kind': 'choice',
        'name': 'Meaning of Life',
        'body': 'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order': 'set',
        'max_options_to_show': 4,
    }).run(db_conn)

    cards_parameters_table.insert({
        'entity_id': 'tyui4567'
    }).run(db_conn)

    units_table.insert({
        'entity_id': 'vbnm7890',
        'created': r.now(),
    }).run(db_conn)

    redis.set('learning_context_abcd1234', json.dumps({
        'set': {'entity_id': 'jkl;1234'},
        'card': {'entity_id': 'tyui4567'},
    }))

    request = {
        'params': {'response': '42'},
        'cookies': {'session_id': session},
        'db_conn': db_conn,
    }
    code, response = routes.card.respond_to_card_route(request, 'tyui4567')

    assert code == 200
    assert 'response' in response
    assert 'feedback' in response
    redis.delete('learning_context_abcd1234')
예제 #4
0
def test_learn_card_400(db_conn, cards_table, session):
    """
    Expect the card for learn mode to make sense,
    given the learner context. (400)
    """

    cards_table.insert({
        'entity_id':
        'tyui4567',
        'unit_id':
        'vbnm7890',
        'created':
        r.now(),
        'modified':
        r.now(),
        'status':
        'accepted',
        'kind':
        'choice',
        'name':
        'Meaning of Life',
        'body':
        'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order':
        'set',
        'max_options_to_show':
        4,
    }).run(db_conn)

    redis.set(
        'learning_context_abcd1234',
        json.dumps({
            'unit': {
                'entity_id': 'gfds6543'
            },
            'subject': {
                'entity_id': '6543hgfs'
            },
        }))

    request = {'cookies': {'session_id': session}, 'db_conn': db_conn}
    code, response = routes.card.learn_card_route(request, 'tyui4567')
    assert code == 400
    redis.delete('learning_context_abcd1234')
예제 #5
0
def test_respond_card(db_conn, units_table, cards_table,
                      cards_parameters_table,
                      responses_table, session):
    """
    Expect to respond to a card. (200)
    """

    cards_table.insert({
        'entity_id': 'tyui4567',
        'unit_id': 'vbnm7890',
        'created': r.now(),
        'modified': r.now(),
        'status': 'accepted',
        'kind': 'choice',
        'name': 'Meaning of Life',
        'body': 'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order': 'set',
        'max_options_to_show': 4,
    }).run(db_conn)

    units_table.insert({
        'entity_id': 'vbnm7890',
        'created': r.now(),
    }).run(db_conn)

    redis.set('learning_context_abcd1234', json.dumps({
        'set': {'entity_id': 'jkl;1234'},
        'card': {'entity_id': 'tyui4567'},
    }))

    request = {
        'params': {'response': '42'},
        'cookies': {'session_id': session},
        'db_conn': db_conn,
    }
    code, response = routes.card.respond_to_card_route(request, 'tyui4567')

    assert code == 200
    assert 'response' in response
    assert 'feedback' in response
    redis.delete('learning_context_abcd1234')
예제 #6
0
def test_learn_card(db_conn, session, cards_table):
    """
    Expect to get a card for learn mode. (200)
    """

    cards_table.insert({
        'entity_id': 'tyui4567',
        'unit_id': 'vbnm7890',
        'created': r.now(),
        'modified': r.now(),
        'status': 'accepted',
        'kind': 'choice',
        'name': 'Meaning of Life',
        'body': 'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order': 'set',
        'max_options_to_show': 4,
    }).run(db_conn)

    redis.set('learning_context_abcd1234', json.dumps({
        'unit': {'entity_id': 'vbnm7890'},
        'set': {'entity_id': 'jkl;1234'},
    }))

    request = {'cookies': {'session_id': session}}
    code, response = routes.card.learn_card_route(request, 'tyui4567')
    assert code == 200
    assert 'order' not in response['card']
    # TODO-3 assert 'correct' not in response['card']['options'][0]
    # TODO-3 assert 'feedback' not in response['card']['options'][0]
    assert 'set' in response
    assert 'unit' in response

    redis.delete('learning_context_abcd1234')
예제 #7
0
def test_respond_card_400a(db_conn, session, cards_table):
    """
    Expect the card being responded to make sense,
    given the learner context. (400)
    """

    cards_table.insert({
        'entity_id': 'tyui4567',
        'unit_id': 'vbnm7890',
        'created': r.now(),
        'modified': r.now(),
        'status': 'accepted',
        'kind': 'choice',
        'name': 'Meaning of Life',
        'body': 'What is the meaning of life?',
        'options': [{
            'value': '42',
            'correct': True,
            'feedback': 'Yay!',
        }, {
            'value': 'love',
            'correct': False,
            'feedback': 'Boo!',
        }],
        'order': 'set',
        'max_options_to_show': 4,
    }).run(db_conn)

    redis.set('learning_context_abcd1234', json.dumps({
        'unit': {'entity_id': 'vbnm7890'},
        'set': {'entity_id': 'jkl;1234'},
        'card': {'entity_id': 'gfds3456'},
    }))

    request = {
        'params': {'response': '42'},
        'cookies': {'session_id': session}
    }
    code, response = routes.card.respond_to_card_route(request, 'tyui4567')
    assert code == 400
    redis.delete('learning_context_abcd1234')
예제 #8
0
def test_get_learning_context(db_conn, users_table):
    """
    Expect to get the learning context.
    """

    users_table.insert({"id": "abcd1234", "name": "Dalton", "email": "*****@*****.**", "password": "******"}).run(
        db_conn
    )

    user = get_user({"id": "abcd1234"}, db_conn)

    redis.set(
        "learning_context_abcd1234",
        json.dumps({"card": {"entity_id": "A"}, "unit": {"entity_id": "B"}, "set": {"entity_id": "C"}}),
    )
    assert get_learning_context(user) == {
        "card": {"entity_id": "A"},
        "unit": {"entity_id": "B"},
        "set": {"entity_id": "C"},
    }

    redis.delete("learning_context_abcd1234")
    assert get_learning_context(user) == {}