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

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

Issue 2881173003: Download Service : Added leveldb proto layer (Closed)
Patch Set: Removed Model::Destroy Created 3 years, 7 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
« no previous file with comments | « components/download/internal/model_impl.cc ('k') | components/download/internal/noop_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
56 55
57 model_->Initialize(); 56 model_->Initialize();
58 EXPECT_TRUE(store_->init_called()); 57 EXPECT_TRUE(store_->init_called());
59 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 58 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
60
61 model_->Destroy();
62 EXPECT_TRUE(store_->destroy_called());
63 store_->TriggerDestroy(true);
64 } 59 }
65 60
66 TEST_F(DownloadServiceModelImplTest, SuccessfulInitWithEntries) { 61 TEST_F(DownloadServiceModelImplTest, SuccessfulInitWithEntries) {
67 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 62 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
68 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 63 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
69 std::vector<Entry> entries = {entry1, entry2}; 64 std::vector<Entry> entries = {entry1, entry2};
70 65
71 InSequence sequence; 66 InSequence sequence;
72 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 67 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
73 68
74 model_->Initialize(); 69 model_->Initialize();
75 EXPECT_TRUE(store_->init_called()); 70 EXPECT_TRUE(store_->init_called());
76 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 71 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
77 72
78 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 73 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
79 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 74 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
80 } 75 }
81 76
82 TEST_F(DownloadServiceModelImplTest, BadInit) { 77 TEST_F(DownloadServiceModelImplTest, BadInit) {
83 EXPECT_CALL(client_, OnInitialized(false)).Times(1); 78 EXPECT_CALL(client_, OnInitialized(false)).Times(1);
84 79
85 model_->Initialize(); 80 model_->Initialize();
86 EXPECT_TRUE(store_->init_called()); 81 EXPECT_TRUE(store_->init_called());
87 store_->TriggerInit(false, base::MakeUnique<std::vector<Entry>>()); 82 store_->TriggerInit(false, base::MakeUnique<std::vector<Entry>>());
88 } 83 }
89 84
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) { 85 TEST_F(DownloadServiceModelImplTest, Add) {
105 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 86 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
106 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 87 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
107 88
108 InSequence sequence; 89 InSequence sequence;
109 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 90 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
110 EXPECT_CALL(client_, OnItemAdded(true, entry1.client, entry1.guid)).Times(1); 91 EXPECT_CALL(client_, OnItemAdded(true, entry1.client, entry1.guid)).Times(1);
111 EXPECT_CALL(client_, OnItemAdded(false, entry2.client, entry2.guid)).Times(1); 92 EXPECT_CALL(client_, OnItemAdded(false, entry2.client, entry2.guid)).Times(1);
112 93
113 model_->Initialize(); 94 model_->Initialize();
114 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 95 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
115 96
116 model_->Add(entry1); 97 model_->Add(entry1);
117 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 98 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
118 EXPECT_TRUE( 99 EXPECT_TRUE(test::CompareEntry(&entry1, store_->LastUpdatedEntry()));
119 test::SuperficialEntryCompare(&entry1, store_->LastUpdatedEntry()));
120 store_->TriggerUpdate(true); 100 store_->TriggerUpdate(true);
121 101
122 model_->Add(entry2); 102 model_->Add(entry2);
123 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 103 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
124 EXPECT_TRUE( 104 EXPECT_TRUE(test::CompareEntry(&entry2, store_->LastUpdatedEntry()));
125 test::SuperficialEntryCompare(&entry2, store_->LastUpdatedEntry()));
126 105
127 store_->TriggerUpdate(false); 106 store_->TriggerUpdate(false);
128 EXPECT_EQ(nullptr, model_->Get(entry2.guid)); 107 EXPECT_EQ(nullptr, model_->Get(entry2.guid));
129 } 108 }
130 109
131 TEST_F(DownloadServiceModelImplTest, Update) { 110 TEST_F(DownloadServiceModelImplTest, Update) {
132 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 111 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
133 112
134 Entry entry2(entry1); 113 Entry entry2(entry1);
135 entry2.state = Entry::State::AVAILABLE; 114 entry2.state = Entry::State::AVAILABLE;
136 115
137 Entry entry3(entry1); 116 Entry entry3(entry1);
138 entry3.state = Entry::State::ACTIVE; 117 entry3.state = Entry::State::ACTIVE;
139 118
140 std::vector<Entry> entries = {entry1}; 119 std::vector<Entry> entries = {entry1};
141 120
142 InSequence sequence; 121 InSequence sequence;
143 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 122 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
144 EXPECT_CALL(client_, OnItemUpdated(true, entry1.client, entry1.guid)) 123 EXPECT_CALL(client_, OnItemUpdated(true, entry1.client, entry1.guid))
145 .Times(1); 124 .Times(1);
146 EXPECT_CALL(client_, OnItemUpdated(false, entry1.client, entry1.guid)) 125 EXPECT_CALL(client_, OnItemUpdated(false, entry1.client, entry1.guid))
147 .Times(1); 126 .Times(1);
148 127
149 model_->Initialize(); 128 model_->Initialize();
150 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 129 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
151 130
152 model_->Update(entry2); 131 model_->Update(entry2);
153 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 132 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
154 EXPECT_TRUE( 133 EXPECT_TRUE(test::CompareEntry(&entry2, store_->LastUpdatedEntry()));
155 test::SuperficialEntryCompare(&entry2, store_->LastUpdatedEntry()));
156 store_->TriggerUpdate(true); 134 store_->TriggerUpdate(true);
157 135
158 model_->Update(entry3); 136 model_->Update(entry3);
159 EXPECT_TRUE(test::SuperficialEntryCompare(&entry3, model_->Get(entry3.guid))); 137 EXPECT_TRUE(test::CompareEntry(&entry3, model_->Get(entry3.guid)));
160 EXPECT_TRUE( 138 EXPECT_TRUE(test::CompareEntry(&entry3, store_->LastUpdatedEntry()));
161 test::SuperficialEntryCompare(&entry3, store_->LastUpdatedEntry()));
162 139
163 store_->TriggerUpdate(false); 140 store_->TriggerUpdate(false);
164 EXPECT_TRUE(test::SuperficialEntryCompare(&entry3, model_->Get(entry3.guid))); 141 EXPECT_TRUE(test::CompareEntry(&entry3, model_->Get(entry3.guid)));
165 } 142 }
166 143
167 TEST_F(DownloadServiceModelImplTest, Remove) { 144 TEST_F(DownloadServiceModelImplTest, Remove) {
168 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 145 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
169 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 146 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
170 std::vector<Entry> entries = {entry1, entry2}; 147 std::vector<Entry> entries = {entry1, entry2};
171 148
172 InSequence sequence; 149 InSequence sequence;
173 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 150 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
174 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid)) 151 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid))
(...skipping 19 matching lines...) Expand all
194 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 171 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
195 172
196 std::vector<Entry> entries = {entry}; 173 std::vector<Entry> entries = {entry};
197 174
198 InSequence sequence; 175 InSequence sequence;
199 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 176 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
200 177
201 model_->Initialize(); 178 model_->Initialize();
202 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 179 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
203 180
204 EXPECT_TRUE(test::SuperficialEntryCompare(&entry, model_->Get(entry.guid))); 181 EXPECT_TRUE(test::CompareEntry(&entry, model_->Get(entry.guid)));
205 EXPECT_EQ(nullptr, model_->Get(base::GenerateGUID())); 182 EXPECT_EQ(nullptr, model_->Get(base::GenerateGUID()));
206 } 183 }
207 184
208 TEST_F(DownloadServiceModelImplTest, PeekEntries) { 185 TEST_F(DownloadServiceModelImplTest, PeekEntries) {
209 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 186 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
210 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 187 Entry entry2 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
211 std::vector<Entry> entries = {entry1, entry2}; 188 std::vector<Entry> entries = {entry1, entry2};
212 189
213 InSequence sequence; 190 InSequence sequence;
214 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 191 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
215 192
216 model_->Initialize(); 193 model_->Initialize();
217 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 194 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
218 195
219 std::vector<Entry*> expected_peek = {&entry1, &entry2}; 196 std::vector<Entry*> expected_peek = {&entry1, &entry2};
220 197
221 EXPECT_TRUE( 198 EXPECT_TRUE(test::CompareEntryList(expected_peek, model_->PeekEntries()));
222 test::SuperficialEntryListCompare(expected_peek, model_->PeekEntries()));
223 } 199 }
224 200
225 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterAdd) { 201 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterAdd) {
226 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 202 Entry entry = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
227 203
228 InSequence sequence; 204 InSequence sequence;
229 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 205 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
230 EXPECT_CALL(client_, OnItemAdded(_, _, _)).Times(0); 206 EXPECT_CALL(client_, OnItemAdded(_, _, _)).Times(0);
231 EXPECT_CALL(client_, OnItemRemoved(true, entry.client, entry.guid)).Times(1); 207 EXPECT_CALL(client_, OnItemRemoved(true, entry.client, entry.guid)).Times(1);
232 208
233 model_->Initialize(); 209 model_->Initialize();
234 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>()); 210 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>());
235 211
236 model_->Add(entry); 212 model_->Add(entry);
237 EXPECT_TRUE(test::SuperficialEntryCompare(&entry, model_->Get(entry.guid))); 213 EXPECT_TRUE(test::CompareEntry(&entry, model_->Get(entry.guid)));
238 214
239 model_->Remove(entry.guid); 215 model_->Remove(entry.guid);
240 EXPECT_EQ(nullptr, model_->Get(entry.guid)); 216 EXPECT_EQ(nullptr, model_->Get(entry.guid));
241 217
242 store_->TriggerUpdate(true); 218 store_->TriggerUpdate(true);
243 store_->TriggerRemove(true); 219 store_->TriggerRemove(true);
244 } 220 }
245 221
246 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterUpdate) { 222 TEST_F(DownloadServiceModelImplTest, TestRemoveAfterUpdate) {
247 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID()); 223 Entry entry1 = test::BuildEntry(DownloadClient::TEST, base::GenerateGUID());
248 224
249 Entry entry2(entry1); 225 Entry entry2(entry1);
250 entry2.state = Entry::State::AVAILABLE; 226 entry2.state = Entry::State::AVAILABLE;
251 227
252 std::vector<Entry> entries = {entry1}; 228 std::vector<Entry> entries = {entry1};
253 229
254 InSequence sequence; 230 InSequence sequence;
255 EXPECT_CALL(client_, OnInitialized(true)).Times(1); 231 EXPECT_CALL(client_, OnInitialized(true)).Times(1);
256 EXPECT_CALL(client_, OnItemUpdated(_, _, _)).Times(0); 232 EXPECT_CALL(client_, OnItemUpdated(_, _, _)).Times(0);
257 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid)) 233 EXPECT_CALL(client_, OnItemRemoved(true, entry1.client, entry1.guid))
258 .Times(1); 234 .Times(1);
259 235
260 model_->Initialize(); 236 model_->Initialize();
261 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries)); 237 store_->TriggerInit(true, base::MakeUnique<std::vector<Entry>>(entries));
262 EXPECT_TRUE(test::SuperficialEntryCompare(&entry1, model_->Get(entry1.guid))); 238 EXPECT_TRUE(test::CompareEntry(&entry1, model_->Get(entry1.guid)));
263 239
264 model_->Update(entry2); 240 model_->Update(entry2);
265 EXPECT_TRUE(test::SuperficialEntryCompare(&entry2, model_->Get(entry2.guid))); 241 EXPECT_TRUE(test::CompareEntry(&entry2, model_->Get(entry2.guid)));
266 242
267 model_->Remove(entry2.guid); 243 model_->Remove(entry2.guid);
268 EXPECT_EQ(nullptr, model_->Get(entry2.guid)); 244 EXPECT_EQ(nullptr, model_->Get(entry2.guid));
269 245
270 store_->TriggerUpdate(true); 246 store_->TriggerUpdate(true);
271 store_->TriggerRemove(true); 247 store_->TriggerRemove(true);
272 } 248 }
273 249
274 } // namespace download 250 } // namespace download
OLDNEW
« no previous file with comments | « components/download/internal/model_impl.cc ('k') | components/download/internal/noop_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698