Skip to content

Commit 9a4aea9

Browse files
committed
refactor: Overhaul the sample project
The old sample was confusing because it tried to do too much for one, and also because the concepts of HTTP and message interactions were split across multiple examples. There was also a separate Readme sample which effectively just did the same thing as the canonical example. Now there's one combined sample which demonstrates the most commonly used features of both HTTP and message interactions, matchers and provider states. It's presented in a much more realistic scenario of a fulfilment component which responds to orders being created via pubsub and then updates the order, so should be easier to intuitively understand.
1 parent 3d72f08 commit 9a4aea9

File tree

94 files changed

+1175
-2696
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+1175
-2696
lines changed

PactNet.sln

Lines changed: 5 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ VisualStudioVersion = 17.0.32014.148
55
MinimumVisualStudioVersion = 15.0.26124.0
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{547DB478-460A-428F-9371-1D653CE85DB5}"
77
EndProject
8-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EventApi", "EventApi", "{6663C12E-9912-40D0-9310-D119D1F6B023}"
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OrdersApi", "OrdersApi", "{6663C12E-9912-40D0-9310-D119D1F6B023}"
99
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer", "samples\EventApi\Consumer\Consumer.csproj", "{1B9BAF2F-906B-4358-A1EF-AC79F7966B75}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer", "samples\OrdersApi\Consumer\Consumer.csproj", "{1B9BAF2F-906B-4358-A1EF-AC79F7966B75}"
1111
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer.Tests", "samples\EventApi\Consumer.Tests\Consumer.Tests.csproj", "{0A442FF6-4B8D-4E7E-8FE7-F7F37EB034B0}"
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer.Tests", "samples\OrdersApi\Consumer.Tests\Consumer.Tests.csproj", "{0A442FF6-4B8D-4E7E-8FE7-F7F37EB034B0}"
1313
EndProject
1414
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CF67D7A1-AE96-420B-9971-65E535B903E8}"
1515
EndProject
@@ -23,29 +23,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PactNet.Abstractions.Tests"
2323
EndProject
2424
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PactNet.Tests", "tests\PactNet.Tests\PactNet.Tests.csproj", "{B8C8934E-9581-46D6-A728-BC5EAB9C06DD}"
2525
EndProject
26-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider", "samples\EventApi\Provider\Provider.csproj", "{5E915D66-917B-4730-B31A-C9727C196346}"
26+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider", "samples\OrdersApi\Provider\Provider.csproj", "{5E915D66-917B-4730-B31A-C9727C196346}"
2727
EndProject
28-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider.Tests", "samples\EventApi\Provider.Tests\Provider.Tests.csproj", "{D8B75E48-6E45-468B-8049-B73823C14CB8}"
29-
EndProject
30-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Messaging", "Messaging", "{9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F}"
31-
EndProject
32-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer", "samples\Messaging\Consumer\Consumer.csproj", "{1D977F8E-D3C1-4730-BE46-B2F916761CF4}"
33-
EndProject
34-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Consumer.Tests", "samples\Messaging\Consumer.Tests\Consumer.Tests.csproj", "{AED4E706-6E99-47B8-BE17-A3503275DB3E}"
35-
EndProject
36-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReadMe", "ReadMe", "{87FC5A4B-1977-4FBA-AA71-63F48B28C3B0}"
37-
EndProject
38-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Readme.Consumer", "samples\ReadMe\Consumer\Readme.Consumer.csproj", "{B7363201-F52A-49C4-A299-C9B459827C04}"
39-
EndProject
40-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Readme.Consumer.Tests", "samples\ReadMe\Consumer.Tests\Readme.Consumer.Tests.csproj", "{B180E079-9392-44F8-BF44-EB2E0D205FA1}"
41-
EndProject
42-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Readme.Provider", "samples\ReadMe\Provider\Readme.Provider.csproj", "{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}"
43-
EndProject
44-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Readme.Provider.Tests", "samples\ReadMe\Provider.Tests\Readme.Provider.Tests.csproj", "{172916A7-5913-4389-8F58-A774036C9566}"
45-
EndProject
46-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider", "samples\Messaging\Provider\Provider.csproj", "{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}"
47-
EndProject
48-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider.Tests", "samples\Messaging\Provider.Tests\Provider.Tests.csproj", "{16429FC0-67A5-4089-98A9-CBD72D9DB910}"
28+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Provider.Tests", "samples\OrdersApi\Provider.Tests\Provider.Tests.csproj", "{D8B75E48-6E45-468B-8049-B73823C14CB8}"
4929
EndProject
5030
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E2C86290-F39C-4854-A7D2-D6C44CB1C65F}"
5131
ProjectSection(SolutionItems) = preProject
@@ -163,102 +143,6 @@ Global
163143
{D8B75E48-6E45-468B-8049-B73823C14CB8}.Release|x64.Build.0 = Release|Any CPU
164144
{D8B75E48-6E45-468B-8049-B73823C14CB8}.Release|x86.ActiveCfg = Release|Any CPU
165145
{D8B75E48-6E45-468B-8049-B73823C14CB8}.Release|x86.Build.0 = Release|Any CPU
166-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
167-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
168-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|x64.ActiveCfg = Debug|Any CPU
169-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|x64.Build.0 = Debug|Any CPU
170-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|x86.ActiveCfg = Debug|Any CPU
171-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Debug|x86.Build.0 = Debug|Any CPU
172-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
173-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|Any CPU.Build.0 = Release|Any CPU
174-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|x64.ActiveCfg = Release|Any CPU
175-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|x64.Build.0 = Release|Any CPU
176-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|x86.ActiveCfg = Release|Any CPU
177-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4}.Release|x86.Build.0 = Release|Any CPU
178-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
179-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
180-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|x64.ActiveCfg = Debug|Any CPU
181-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|x64.Build.0 = Debug|Any CPU
182-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|x86.ActiveCfg = Debug|Any CPU
183-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Debug|x86.Build.0 = Debug|Any CPU
184-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
185-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|Any CPU.Build.0 = Release|Any CPU
186-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|x64.ActiveCfg = Release|Any CPU
187-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|x64.Build.0 = Release|Any CPU
188-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|x86.ActiveCfg = Release|Any CPU
189-
{AED4E706-6E99-47B8-BE17-A3503275DB3E}.Release|x86.Build.0 = Release|Any CPU
190-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
191-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|Any CPU.Build.0 = Debug|Any CPU
192-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|x64.ActiveCfg = Debug|Any CPU
193-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|x64.Build.0 = Debug|Any CPU
194-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|x86.ActiveCfg = Debug|Any CPU
195-
{B7363201-F52A-49C4-A299-C9B459827C04}.Debug|x86.Build.0 = Debug|Any CPU
196-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|Any CPU.ActiveCfg = Release|Any CPU
197-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|Any CPU.Build.0 = Release|Any CPU
198-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|x64.ActiveCfg = Release|Any CPU
199-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|x64.Build.0 = Release|Any CPU
200-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|x86.ActiveCfg = Release|Any CPU
201-
{B7363201-F52A-49C4-A299-C9B459827C04}.Release|x86.Build.0 = Release|Any CPU
202-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
203-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
204-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|x64.ActiveCfg = Debug|Any CPU
205-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|x64.Build.0 = Debug|Any CPU
206-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|x86.ActiveCfg = Debug|Any CPU
207-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Debug|x86.Build.0 = Debug|Any CPU
208-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
209-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|Any CPU.Build.0 = Release|Any CPU
210-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|x64.ActiveCfg = Release|Any CPU
211-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|x64.Build.0 = Release|Any CPU
212-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|x86.ActiveCfg = Release|Any CPU
213-
{B180E079-9392-44F8-BF44-EB2E0D205FA1}.Release|x86.Build.0 = Release|Any CPU
214-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
215-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
216-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|x64.ActiveCfg = Debug|Any CPU
217-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|x64.Build.0 = Debug|Any CPU
218-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|x86.ActiveCfg = Debug|Any CPU
219-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Debug|x86.Build.0 = Debug|Any CPU
220-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
221-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|Any CPU.Build.0 = Release|Any CPU
222-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|x64.ActiveCfg = Release|Any CPU
223-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|x64.Build.0 = Release|Any CPU
224-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|x86.ActiveCfg = Release|Any CPU
225-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB}.Release|x86.Build.0 = Release|Any CPU
226-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
227-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|Any CPU.Build.0 = Debug|Any CPU
228-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|x64.ActiveCfg = Debug|Any CPU
229-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|x64.Build.0 = Debug|Any CPU
230-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|x86.ActiveCfg = Debug|Any CPU
231-
{172916A7-5913-4389-8F58-A774036C9566}.Debug|x86.Build.0 = Debug|Any CPU
232-
{172916A7-5913-4389-8F58-A774036C9566}.Release|Any CPU.ActiveCfg = Release|Any CPU
233-
{172916A7-5913-4389-8F58-A774036C9566}.Release|Any CPU.Build.0 = Release|Any CPU
234-
{172916A7-5913-4389-8F58-A774036C9566}.Release|x64.ActiveCfg = Release|Any CPU
235-
{172916A7-5913-4389-8F58-A774036C9566}.Release|x64.Build.0 = Release|Any CPU
236-
{172916A7-5913-4389-8F58-A774036C9566}.Release|x86.ActiveCfg = Release|Any CPU
237-
{172916A7-5913-4389-8F58-A774036C9566}.Release|x86.Build.0 = Release|Any CPU
238-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
239-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|Any CPU.Build.0 = Debug|Any CPU
240-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|x64.ActiveCfg = Debug|Any CPU
241-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|x64.Build.0 = Debug|Any CPU
242-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|x86.ActiveCfg = Debug|Any CPU
243-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Debug|x86.Build.0 = Debug|Any CPU
244-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|Any CPU.ActiveCfg = Release|Any CPU
245-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|Any CPU.Build.0 = Release|Any CPU
246-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|x64.ActiveCfg = Release|Any CPU
247-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|x64.Build.0 = Release|Any CPU
248-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|x86.ActiveCfg = Release|Any CPU
249-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311}.Release|x86.Build.0 = Release|Any CPU
250-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
251-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|Any CPU.Build.0 = Debug|Any CPU
252-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|x64.ActiveCfg = Debug|Any CPU
253-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|x64.Build.0 = Debug|Any CPU
254-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|x86.ActiveCfg = Debug|Any CPU
255-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Debug|x86.Build.0 = Debug|Any CPU
256-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|Any CPU.ActiveCfg = Release|Any CPU
257-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|Any CPU.Build.0 = Release|Any CPU
258-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|x64.ActiveCfg = Release|Any CPU
259-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|x64.Build.0 = Release|Any CPU
260-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|x86.ActiveCfg = Release|Any CPU
261-
{16429FC0-67A5-4089-98A9-CBD72D9DB910}.Release|x86.Build.0 = Release|Any CPU
262146
{02E265A1-A7A2-4106-8F6A-5027FDC3FC50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
263147
{02E265A1-A7A2-4106-8F6A-5027FDC3FC50}.Debug|Any CPU.Build.0 = Debug|Any CPU
264148
{02E265A1-A7A2-4106-8F6A-5027FDC3FC50}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -285,16 +169,6 @@ Global
285169
{B8C8934E-9581-46D6-A728-BC5EAB9C06DD} = {A117BBC6-60BB-4282-BF10-E616DE0AFAD0}
286170
{5E915D66-917B-4730-B31A-C9727C196346} = {6663C12E-9912-40D0-9310-D119D1F6B023}
287171
{D8B75E48-6E45-468B-8049-B73823C14CB8} = {6663C12E-9912-40D0-9310-D119D1F6B023}
288-
{9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F} = {547DB478-460A-428F-9371-1D653CE85DB5}
289-
{1D977F8E-D3C1-4730-BE46-B2F916761CF4} = {9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F}
290-
{AED4E706-6E99-47B8-BE17-A3503275DB3E} = {9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F}
291-
{87FC5A4B-1977-4FBA-AA71-63F48B28C3B0} = {547DB478-460A-428F-9371-1D653CE85DB5}
292-
{B7363201-F52A-49C4-A299-C9B459827C04} = {87FC5A4B-1977-4FBA-AA71-63F48B28C3B0}
293-
{B180E079-9392-44F8-BF44-EB2E0D205FA1} = {87FC5A4B-1977-4FBA-AA71-63F48B28C3B0}
294-
{C0666A04-90F2-4C58-A165-6ADB4C71BBBB} = {87FC5A4B-1977-4FBA-AA71-63F48B28C3B0}
295-
{172916A7-5913-4389-8F58-A774036C9566} = {87FC5A4B-1977-4FBA-AA71-63F48B28C3B0}
296-
{1CE30FC5-1439-4FB3-85ED-B2D4E70FB311} = {9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F}
297-
{16429FC0-67A5-4089-98A9-CBD72D9DB910} = {9BA1DB3F-BD05-4E6A-861F-E1FEE63DC76F}
298172
{02E265A1-A7A2-4106-8F6A-5027FDC3FC50} = {CF67D7A1-AE96-420B-9971-65E535B903E8}
299173
EndGlobalSection
300174
GlobalSection(ExtensibilityGlobals) = postSolution

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ Watch our [series](https://www.youtube.com/playlist?list=PLwy9Bnco-IpfZ72VQ7hce8
6868

6969
## Usage
7070

71-
In the sections below, we provide a brief sample of the typical flow for Pact testing, written in the XUnit framework. To see the complete example and run it, check out the `Samples/ReadMe` folder.
71+
In the sections below, we provide a brief sample of the typical flow for Pact testing using HTTP interactions, written in
72+
the XUnit framework.
73+
74+
A more comprehensive example which uses both HTTP and message interactions, provider states, matchers and more can be
75+
found in the [`samples/OrdersApi`](samples/OrdersApi) folder.
7276

7377
### Writing a Consumer test
7478

@@ -197,7 +201,8 @@ public class SomethingApiTests : IClassFixture<SomethingApiFixture>
197201
"Something API Consumer-Something API.json");
198202

199203
// Act / Assert
200-
IPactVerifier pactVerifier = new PactVerifier("Something API", config);
204+
using var pactVerifier = new PactVerifier("Something API", config);
205+
201206
pactVerifier
202207
.WithHttpEndpoint(fixture.ServerUri)
203208
.WithFileSource(new FileInfo(pactPath))

0 commit comments

Comments
 (0)