Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(644)

Side by Side Diff: components/download/internal/model_impl_unittest.cc

Issue 2881173003: Download Service : Added leveldb proto layer (Closed)
Patch Set: Using OnceCallback and removed Store::Destroy Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/download/internal/model_impl.h" 5 #include "components/download/internal/model_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 private: 46 private:
47 DISALLOW_COPY_AND_ASSIGN(DownloadServiceModelImplTest); 47 DISALLOW_COPY_AND_ASSIGN(DownloadServiceModelImplTest);
48 }; 48 };
49 49
50 } // namespace 50 } // namespace
51 51
52 TEST_F(DownloadServiceModelImplTest, SuccessfulLifecycle) { 52 TEST_F(DownloadServiceModelImplTest, SuccessfulLifecycle) {
53 InSequence sequence; 53 InSequence sequence;
54 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 54 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
55 EXPECT_CALL(client_, OnDestroyed(true)).Times(1); 55 EXPECT_CALL(client_, OnDestroyed()).Times(1);
56 56
57 model_->Initialize(); 57 model_->Initialize();
58 EXPECT_TRUE(store_->init_called()); 58 EXPECT_TRUE(store_->init_called());
59 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 59 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
60 60
61 model_->Destroy(); 61 model_->Destroy();
62 EXPECT_TRUE(store_->destroy_called());
63 store_->TriggerDestroy(true);
64 } 62 }
65 63
66 TEST_F(DownloadServiceModelImplTest, SuccessfulInitWithEntries) { 64 TEST_F(DownloadServiceModelImplTest, SuccessfulInitWithEntries) {
67 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 65 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
68 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 66 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
69 std::vector<Entry> entries = {entry1, entry2}; 67 std::vector<Entry> entries = {entry1, entry2};
70 68
71 InSequence sequence; 69 InSequence sequence;
72 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 70 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
73 71
74 model_->Initialize(); 72 model_->Initialize();
75 EXPECT_TRUE(store_->init_called()); 73 EXPECT_TRUE(store_->init_called());
76 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 74 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
77 75
78 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 76 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
79 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 77 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
80 } 78 }
81 79
82 TEST_F(DownloadServiceModelImplTest, BadInit) { 80 TEST_F(DownloadServiceModelImplTest, BadInit) {
83 EXPECT_CALL(client_, OnInitialized(false)).Times(1); 81 EXPECT_CALL(client_, OnInitialized(false)).Times(1);
84 82
85 model_->Initialize(); 83 model_->Initialize();
86 EXPECT_TRUE(store_->init_called()); 84 EXPECT_TRUE(store_->init_called());
87 store_->TriggerInit(false, base::MakeUnique<std::vector<Entry>>()); 85 store_->TriggerInit(false, base::MakeUnique<std::vector<Entry>>());
88 } 86 }
89 87
90 TEST_F(DownloadServiceModelImplTest, BadDestroy) {
91 InSequence sequence;
92 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
93 EXPECT_CALL(client_, OnDestroyed(false)).Times(1);
94
95 model_->Initialize();
96 EXPECT_TRUE(store_->init_called());
97 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
98
99 model_->Destroy();
100 EXPECT_TRUE(store_->destroy_called());
101 store_->TriggerDestroy(false);
102 }
103
104 TEST_F(DownloadServiceModelImplTest, Add) { 88 TEST_F(DownloadServiceModelImplTest, Add) {
105 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 89 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
106 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 90 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
107 91
108 InSequence sequence; 92 InSequence sequence;
109 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 93 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
110 EXPECT_CALL(client_, OnItemAdded(true, entry1.client, entry1.guid)).Times(1); 94 EXPECT_CALL(client_, OnItemAdded(true, entry1.client, entry1.guid)).Times(1);
111 EXPECT_CALL(client_, OnItemAdded(false, entry2.client, entry2.guid)).Times(1); 95 EXPECT_CALL(client_, OnItemAdded(false, entry2.client, entry2.guid)).Times(1);
112 96
113 model_->Initialize(); 97 model_->Initialize();
114 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 98 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
115 99
116 model_->Add(entry1); 100 model_->Add(entry1);
117 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 101 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
118 EXPECT_TRUE( 102 EXPECT_TRUE(test::CompareEntry(&entry1, store_->LastUpdatedEntry()));
119 test::SuperficialEntryCompare(&entry1, store_->LastUpdatedEntry()));
120 store_->TriggerUpdate(true); 103 store_->TriggerUpdate(true);
121 104
122 model_->Add(entry2); 105 model_->Add(entry2);
123 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 106 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
124 EXPECT_TRUE( 107 EXPECT_TRUE(test::CompareEntry(&entry2, store_->LastUpdatedEntry()));
125 test::SuperficialEntryCompare(&entry2, store_->LastUpdatedEntry()));
126 108
127 store_->TriggerUpdate(false); 109 store_->TriggerUpdate(false);
128 EXPECT_EQ(nullptr, model_->Get(entry2.guid)); 110 EXPECT_EQ(nullptr, model_->Get(entry2.guid));
129 } 111 }
130 112
131 TEST_F(DownloadServiceModelImplTest, Update) { 113 TEST_F(DownloadServiceModelImplTest, Update) {
132 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 114 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
133 115
134 Entry entry2(entry1); 116 Entry entry2(entry1);
135 entry2.state = Entry::State::AVAILABLE; 117 entry2.state = Entry::State::AVAILABLE;
136 118
137 Entry entry3(entry1); 119 Entry entry3(entry1);
138 entry3.state = Entry::State::ACTIVE; 120 entry3.state = Entry::State::ACTIVE;
139 121
140 std::vector<Entry> entries = {entry1}; 122 std::vector<Entry> entries = {entry1};
141 123
142 InSequence sequence; 124 InSequence sequence;
143 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 125 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
144 EXPECT_CALL(client_, OnItemUpdated(true, entry1.client, entry1.guid)) 126 EXPECT_CALL(client_, OnItemUpdated(true, entry1.client, entry1.guid))
145 .Times(1); 127 .Times(1);
146 EXPECT_CALL(client_, OnItemUpdated(false, entry1.client, entry1.guid)) 128 EXPECT_CALL(client_, OnItemUpdated(false, entry1.client, entry1.guid))
147 .Times(1); 129 .Times(1);
148 130
149 model_->Initialize(); 131 model_->Initialize();
150 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 132 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
151 133
152 model_->Update(entry2); 134 model_->Update(entry2);
153 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 135 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
154 EXPECT_TRUE( 136 EXPECT_TRUE(test::CompareEntry(&entry2, store_->LastUpdatedEntry()));
155 test::SuperficialEntryCompare(&entry2, store_->LastUpdatedEntry()));
156 store_->TriggerUpdate(true); 137 store_->TriggerUpdate(true);
157 138
158 model_->Update(entry3); 139 model_->Update(entry3);
159 EXPECT_TRUE(test::SuperficialEntryCompare(&entry3, model_->Get(entry3.guid))); 140 EXPECT_TRUE(test::CompareEntry(&entry3, model_->Get(entry3.guid)));
160 EXPECT_TRUE( 141 EXPECT_TRUE(test::CompareEntry(&entry3, store_->LastUpdatedEntry()));
161 test::SuperficialEntryCompare(&entry3, store_->LastUpdatedEntry()));
162 142
163 store_->TriggerUpdate(false); 143 store_->TriggerUpdate(false);
164 EXPECT_TRUE(test::SuperficialEntryCompare(&entry3, model_->Get(entry3.guid))); 144 EXPECT_TRUE(test::CompareEntry(&entry3, model_->Get(entry3.guid)));
165 } 145 }
166 146
167 TEST_F(DownloadServiceModelImplTest, Remove) { 147 TEST_F(DownloadServiceModelImplTest, Remove) {
168 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 148 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
169 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 149 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
170 std::vector<Entry> entries = {entry1, entry2}; 150 std::vector<Entry> entries = {entry1, entry2};
171 151
172 InSequence sequence; 152 InSequence sequence;
173 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 153 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
174 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid)) 154 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid))
(...skipping 19 matching lines...) Expand all
194 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 174 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
195 175
196 std::vector<Entry> entries = {entry}; 176 std::vector<Entry> entries = {entry};
197 177
198 InSequence sequence; 178 InSequence sequence;
199 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 179 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
200 180
201 model_->Initialize(); 181 model_->Initialize();
202 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 182 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
203 183
204 EXPECT_TRUE(test::SuperficialEntryCompare(&entry, model_->Get(entry.guid))); 184 EXPECT_TRUE(test::CompareEntry(&entry, model_->Get(entry.guid)));
205 EXPECT_EQ(nullptr, model_->Get(base::GenerateGUID())); 185 EXPECT_EQ(nullptr, model_->Get(base::GenerateGUID()));
206 } 186 }
207 187
208 TEST_F(DownloadServiceModelImplTest, PeekEntries) { 188 TEST_F(DownloadServiceModelImplTest, PeekEntries) {
209 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 189 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
210 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 190 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
211 std::vector<Entry> entries = {entry1, entry2}; 191 std::vector<Entry> entries = {entry1, entry2};
212 192
213 InSequence sequence; 193 InSequence sequence;
214 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 194 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
215 195
216 model_->Initialize(); 196 model_->Initialize();
217 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 197 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
218 198
219 std::vector<Entry*> expected_peek = {&entry1, &entry2}; 199 std::vector<Entry*> expected_peek = {&entry1, &entry2};
220 200
221 EXPECT_TRUE( 201 EXPECT_TRUE(test::CompareEntryList(expected_peek, model_->PeekEntries()));
222 test::SuperficialEntryListCompare(expected_peek, model_->PeekEntries()));
223 } 202 }
224 203
225 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterAdd) { 204 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterAdd) {
226 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 205 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
227 206
228 InSequence sequence; 207 InSequence sequence;
229 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 208 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
230 EXPECT_CALL(client_, OnItemAdded(_, _, _)).Times(0); 209 EXPECT_CALL(client_, OnItemAdded(_, _, _)).Times(0);
231 EXPECT_CALL(client_, OnItemRemoved(true, entry.client, entry.guid)).Times(1); 210 EXPECT_CALL(client_, OnItemRemoved(true, entry.client, entry.guid)).Times(1);
232 211
233 model_->Initialize(); 212 model_->Initialize();
234 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 213 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
235 214
236 model_->Add(entry); 215 model_->Add(entry);
237 EXPECT_TRUE(test::SuperficialEntryCompare(&entry, model_->Get(entry.guid))); 216 EXPECT_TRUE(test::CompareEntry(&entry, model_->Get(entry.guid)));
238 217
239 model_->Remove(entry.guid); 218 model_->Remove(entry.guid);
240 EXPECT_EQ(nullptr, model_->Get(entry.guid)); 219 EXPECT_EQ(nullptr, model_->Get(entry.guid));
241 220
242 store_->TriggerUpdate(true); 221 store_->TriggerUpdate(true);
243 store_->TriggerRemove(true); 222 store_->TriggerRemove(true);
244 } 223 }
245 224
246 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterUpdate) { 225 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterUpdate) {
247 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 226 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
248 227
249 Entry entry2(entry1); 228 Entry entry2(entry1);
250 entry2.state = Entry::State::AVAILABLE; 229 entry2.state = Entry::State::AVAILABLE;
251 230
252 std::vector<Entry> entries = {entry1}; 231 std::vector<Entry> entries = {entry1};
253 232
254 InSequence sequence; 233 InSequence sequence;
255 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 234 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
256 EXPECT_CALL(client_, OnItemUpdated(_, _, _)).Times(0); 235 EXPECT_CALL(client_, OnItemUpdated(_, _, _)).Times(0);
257 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid)) 236 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid))
258 .Times(1); 237 .Times(1);
259 238
260 model_->Initialize(); 239 model_->Initialize();
261 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 240 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
262 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 241 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
263 242
264 model_->Update(entry2); 243 model_->Update(entry2);
265 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 244 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
266 245
267 model_->Remove(entry2.guid); 246 model_->Remove(entry2.guid);
268 EXPECT_EQ(nullptr, model_->Get(entry2.guid)); 247 EXPECT_EQ(nullptr, model_->Get(entry2.guid));
269 248
270 store_->TriggerUpdate(true); 249 store_->TriggerUpdate(true);
271 store_->TriggerRemove(true); 250 store_->TriggerRemove(true);
272 } 251 }
273 252
274 } // namespace download 253 } // namespace download
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698