1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#include <vector>
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <mw/error.hpp>
#include <mw/utils.hpp>
#include <mw/test_utils.hpp>
#include "data.hpp"
using ::testing::IsEmpty;
TEST(DataSource, CanGetUser)
{
ASSIGN_OR_FAIL(std::unique_ptr<DataSourceSQLite> data,
DataSourceSQLite::newFromMemory());
User u;
u.openid_uid = "aaa";
u.name = "bbb";
EXPECT_TRUE(data->addUser(std::move(u)).has_value());
ASSIGN_OR_FAIL(auto user_maybe, data->userByOpenIDUID("aaa"));
EXPECT_TRUE(user_maybe.has_value());
EXPECT_EQ(user_maybe->name, "bbb");
ASSIGN_OR_FAIL(user_maybe, data->userByOpenIDUID("bbb"));
EXPECT_FALSE(user_maybe.has_value());
}
TEST(DataSource, WontAddDuplicateUser)
{
ASSIGN_OR_FAIL(std::unique_ptr<DataSourceSQLite> data,
DataSourceSQLite::newFromMemory());
User u0;
u0.openid_uid = "aaa";
u0.name = "bbb";
User u1;
u1.openid_uid = "aaa";
u1.name = "ccc";
User u2;
u2.openid_uid = "ddd";
u2.name = "bbb";
EXPECT_TRUE(data->addUser(std::move(u0)).has_value());
EXPECT_FALSE(data->addUser(std::move(u1)).has_value());
EXPECT_FALSE(data->addUser(std::move(u2)).has_value());
}
TEST(DataSource, CanAddLink)
{
ASSIGN_OR_FAIL(std::unique_ptr<DataSourceSQLite> data,
DataSourceSQLite::newFromMemory());
User u;
u.openid_uid = "aaa";
u.name = "bbb";
EXPECT_TRUE(data->addUser(std::move(u)).has_value());
LinkItem l0;
l0.owner_id = 1;
l0.parent_id = std::nullopt;
l0.name = "aaa";
l0.url = "bbb";
l0.description = "ccc";
l0.visibility = LinkItem::PUBLIC;
LinkItem l1;
l1.owner_id = 1;
l1.parent_id = 1;
l1.name = "ddd";
l1.url = "eee";
l1.description = "fff";
l1.visibility = LinkItem::PRIVATE;
ASSIGN_OR_FAIL(int64_t l0id, data->addLink(std::move(l0)));
EXPECT_EQ(l0id, 1);
ASSIGN_OR_FAIL(int64_t l1id, data->addLink(std::move(l1)));
EXPECT_EQ(l1id, 2);
ASSIGN_OR_FAIL(auto ls, data->itemsTopLevelByUser(1));
ASSERT_EQ(ls.size(), 1);
EXPECT_EQ(ls[0].name, "aaa");
ASSIGN_OR_FAIL(ls, data->itemsByParent(1));
ASSERT_EQ(ls.size(), 1);
EXPECT_EQ(ls[0].name, "ddd");
}
|