def test_value_for_simple_cumulative_goal_is_correct(dummy_goal): assert dummy_goal.value() == 0 point = create_point(stamp=dt.datetime.now(), value=1) dummy_goal.add_point(point) assert dummy_goal.value() == 1 point = create_point(stamp=dt.datetime.now(), value=100) dummy_goal.add_point(point) assert dummy_goal.value() == 101
def test_remaining_time_is_correct_more_complex_line(one_goal): point = create_point( stamp=dt.datetime.now() + relativedelta(days=2), value=10) one_goal.add_reference_point(point) point = create_point( stamp=dt.datetime.now() - relativedelta(days=2), value=-10) one_goal.add_reference_point(point) expected_time = one_goal.reference_points[-2].stamp - dt.datetime.now() assert abs(one_goal.time_remaining(dt.datetime.now()) - expected_time) < dt.timedelta(seconds=1)
def dummy_goal(): reference_points = (create_point( stamp=dt.datetime.now() + relativedelta(minutes=-1), value=0, ), create_point( stamp=dt.datetime.now() + relativedelta(days=1), value=1, )) goal = Goal(name='Dummy', pledge=0, reference_points=reference_points) return goal
def test_one_can_add_multiple_datapoints_and_they_are_ordered_in_time( dummy_goal): later_point = create_point( stamp=dt.datetime.now(), value=2, ) dummy_goal.add_point(later_point) earlier_point = create_point( stamp=dt.datetime.now() - relativedelta(days=1), value=3, ) dummy_goal.add_point(earlier_point) assert len(dummy_goal.datapoints) == 2 assert dummy_goal.datapoints[0] == earlier_point assert dummy_goal.datapoints[1] == later_point
def one_goal(dummy_goal): point = create_point( stamp=dt.datetime.now(), value=1, ) dummy_goal.add_point(point) return dummy_goal
def test_one_can_add_reference_points_and_they_are_ordered_in_time(dummy_goal): earlier_point = create_point( stamp=dt.datetime.now() - relativedelta(days=1), value=-1, ) dummy_goal.add_reference_point(earlier_point) assert len(dummy_goal.reference_points) == 3 assert dummy_goal.reference_points[0] == earlier_point
def test_store_makes_commit_when_goal_adds_a_datapoint(one_goal_datastore): old_head_commit = one_goal_datastore.repo.head.commit point = create_point(value=1, stamp=dt.datetime.now()) goal = one_goal_datastore.load_goal('Dummy') goal.add_point(point) assert not one_goal_datastore.repo.is_dirty(untracked_files=True) new_head_commit = one_goal_datastore.repo.head.commit assert old_head_commit != new_head_commit assert new_head_commit.parents[0] == old_head_commit
def add(name, value, comment=''): store = DataStore(os.getcwd()) goal = load_goal(store, name) point = create_point(value=float(value), comment=comment) goal.add_point(point) print('Point added successfully!')
def test_one_can_add_a_datapoint(dummy_goal): point = create_point(stamp=dt.datetime.now(), value=1) dummy_goal.add_point(point) assert len(dummy_goal.datapoints) == 1 assert dummy_goal.datapoints[0] == point
def test_can_delete_raises_error_if_multiple_hashes_match(one_goal): point = create_point(stamp=dt.datetime.now(), value=1) one_goal.add_point(point) with pytest.raises(KeyError): one_goal.remove_point('')
def test_point_id_is_different_from_point_to_point(): point1 = create_point(1) point2 = create_point(2) assert point1.uuid != point2.uuid
def test_hash_of_goals_with_different_reference_points_are_not_the_same( one_goal, one_goal_clone): one_goal_clone.reference_points = tuple( list(one_goal_clone.reference_points) + [create_point(stamp=0, value=0)]) assert hash(one_goal_clone) != hash(one_goal)