Skip to content

Commit e30d7c1

Browse files
committed
. td First step of Savers docs
1 parent d32887c commit e30d7c1

File tree

2 files changed

+72
-27
lines changed

2 files changed

+72
-27
lines changed

approvaltests-util-tests/src/test/java/com/spun/util/persistence/LoadersAndSaversExamplesTest.java

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,15 @@ private DataBase initializeDatabase()
145145
return null;
146146
}
147147
}
148-
class Step4
149-
{
148+
149+
class Step4 {
150150
// begin-snippet: step4
151151
public void sendOutSeniorDiscounts(DataBase database, MailServer mailServer)
152152
{
153153
Loader<List<Customer>> seniorCustomerLoader = database::getSeniorCustomers;
154154
sendOutSeniorDiscounts(mailServer, seniorCustomerLoader);
155155
}
156+
156157
public void sendOutSeniorDiscounts(MailServer mailServer, Loader<List<Customer>> seniorCustomerLoader)
157158
{
158159
List<Customer> seniorCustomers = seniorCustomerLoader.load();
@@ -165,24 +166,44 @@ public void sendOutSeniorDiscounts(MailServer mailServer, Loader<List<Customer>>
165166
}
166167
// end-snippet
167168
}
168-
class Step4_b
169-
{
169+
170+
class Step4_a {
171+
// begin-snippet: step4
172+
public void sendOutSeniorDiscounts(DataBase database, MailServer mailServer)
173+
{
174+
Loader<List<Customer>> seniorCustomerLoader = database::getSeniorCustomers;
175+
sendOutSeniorDiscounts(mailServer, seniorCustomerLoader); // *
176+
}
177+
178+
public void sendOutSeniorDiscounts(MailServer mailServer, Loader<List<Customer>> seniorCustomerLoader) // *
179+
{
180+
List<Customer> seniorCustomers = seniorCustomerLoader.load();
181+
for (Customer customer : seniorCustomers)
182+
{
183+
Discount seniorDiscount = getSeniorDiscount();
184+
String message = generateDiscountMessage(customer, seniorDiscount);
185+
mailServer.sendMessage(customer, message); // -
186+
}
187+
}
188+
// end-snippet
189+
}
190+
class Step4_b {
170191
// begin-snippet: step4_b
171192
public void sendOutSeniorDiscounts(DataBase database, MailServer mailServer)
172193
{
173194
Loader<List<Customer>> seniorCustomerLoader = database::getSeniorCustomers;
174-
Saver<Tuple<Customer, String>> mailSaver = Saver2.create(mailServer::sendMessage);
175-
sendOutSeniorDiscounts(mailSaver, seniorCustomerLoader);
195+
Saver<Tuple<Customer, String>> mailSaver = Saver2.create(mailServer::sendMessage); // +
196+
sendOutSeniorDiscounts(mailSaver, seniorCustomerLoader); // *
176197
}
177-
public void sendOutSeniorDiscounts(Saver<Tuple<Customer, String>> mailSaver,
178-
Loader<List<Customer>> seniorCustomerLoader)
198+
199+
public void sendOutSeniorDiscounts(Saver<Tuple<Customer, String>> mailSaver, Loader<List<Customer>> seniorCustomerLoader) // *
179200
{
180201
List<Customer> seniorCustomers = seniorCustomerLoader.load();
181202
for (Customer customer : seniorCustomers)
182203
{
183204
Discount seniorDiscount = getSeniorDiscount();
184205
String message = generateDiscountMessage(customer, seniorDiscount);
185-
mailSaver.save(new Tuple(customer, message));
206+
mailSaver.save(new Tuple(customer, message)); // +
186207
}
187208
}
188209
// end-snippet
@@ -228,4 +249,5 @@ public String toString()
228249
private class Discount
229250
{
230251
}
252+
231253
}

approvaltests-util/docs/how_to/LoadersAndSavers.md

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -233,29 +233,52 @@ public void sendOutSeniorDiscounts(MailServer mailServer, Loader<List<Customer>>
233233
}
234234
}
235235
```
236-
Here we're sending out an email message. But we don't really care if it gets sent, we just want to make sure it contains the information we expect. Replacing the MailServer object with a Saver is very similar to the process of introducing a Loader.
236+
Here we're sending out an email message.
237+
But we don't really care if it gets sent, we just want to make sure it contains the information we expect.
238+
Replacing the MailServer object with a Saver is very similar to the process of introducing a Loader.
237239

238240
Step 1: Determine the function that we call to save (or in this case, send) the data.
241+
<!-- Snippet Compare: step4_a, step4_b -->
242+
<pre style="color: gray">
243+
public void sendOutSeniorDiscounts(DataBase database, MailServer mailServer)
244+
{
245+
Loader&lt;List&lt;Customer>> seniorCustomerLoader = database::getSeniorCustomers;
246+
sendOutSeniorDiscounts(<b style="color: red">mailServer,</b> seniorCustomerLoader);
247+
}
239248

240-
public void sendOutSeniorDiscounts(MailServer mailServer, Loader&lt;List<Customer&gt;> seniorCustomerLoader) {
241-
242-
List seniorCustomers = seniorCustomerLoader.load();
243-
244-
for (Customer customer : seniorCustomers) {
245-
246-
Discount seniorDiscount = getSeniorDiscount();
247-
248-
String message = generateDiscountMessage(customer, seniorDiscount);
249-
250-
**mailServer.sendMessage(new Email(customer, message));**
251-
252-
**mailSaver.save(new Email(customer, message));**
253-
254-
}
249+
public void sendOutSeniorDiscounts(<b style="color: red">MailServer</b> <b style="color: red">mailServer,</b> Loader&lt;List&lt;Customer>> seniorCustomerLoader)
250+
{
251+
List&lt;Customer> seniorCustomers = seniorCustomerLoader.load();
252+
for (Customer customer : seniorCustomers)
253+
{
254+
Discount seniorDiscount = getSeniorDiscount();
255+
String message = generateDiscountMessage(customer, seniorDiscount);
256+
<b style="color: red"> mailServer.sendMessage(customer, message); </b>
257+
}
258+
}
259+
</pre>
260+
#
261+
<pre style="color: gray">
262+
public void sendOutSeniorDiscounts(DataBase database, MailServer mailServer)
263+
{
264+
Loader&lt;List&lt;Customer>> seniorCustomerLoader = database::getSeniorCustomers;
265+
<b style="color: green"> Saver&lt;Tuple&lt;Customer, String>> mailSaver = Saver2.create(mailServer::sendMessage); </b>
266+
sendOutSeniorDiscounts(<s style="color: red">mailServer,</s> <b style="color: green">mailSaver,</b> seniorCustomerLoader);
267+
}
255268

256-
Record Email(Customer customer, String message) {}
269+
public void sendOutSeniorDiscounts(<s style="color: red">MailServer</s> <s style="color: red">mailServer,</s> <b style="color: green">Saver&lt;Tuple&lt;Customer, </b><b style="color: green">String>></b> <b style="color: green">mailSaver,</b> Loader&lt;List&lt;Customer>> seniorCustomerLoader)
270+
{
271+
List&lt;Customer> seniorCustomers = seniorCustomerLoader.load();
272+
for (Customer customer : seniorCustomers)
273+
{
274+
Discount seniorDiscount = getSeniorDiscount();
275+
String message = generateDiscountMessage(customer, seniorDiscount);
276+
<s style="color: red"> mailServer.sendMessage(customer, message); </s>
277+
<b style="color: green"> mailSaver.save(new Tuple(customer, message)); </b>
278+
}
279+
}
280+
</pre>
257281

258-
}
259282

260283
Step 2: Determine the data we want to test for its saved state. We start with a test. Unfortunately, since the MailServer is a “write-only” object, it’s hard to determine what’s being sent to it. The Saver gives us the ability to easily test for this state now.:
261284

0 commit comments

Comments
 (0)