1. Урок 1.00:11:30
    What Do We Build First?
  2. Урок 2.00:09:06
    Sketching out Our First Test
  3. Урок 3.00:16:42
    Getting to Green
  4. Урок 4.00:11:03
    Unit Testing Presentation Logic
  5. Урок 5.00:07:16
    Refactoring for Speed
  6. Урок 6.00:06:56
    Hiding Unpublished Concerts
  7. Урок 7.00:05:50
    Testing Query Scopes
  8. Урок 8.00:04:10
    Factory States
  9. Урок 9.00:01:02
    Introducing the Next Feature
  10. Урок 10.00:09:47
    Browser Testing vs Endpoint Testing
  11. Урок 11.00:06:23
    Outlining the First Purchasing Test
  12. Урок 12.00:12:23
    Faking the Payment Gateway
  13. Урок 13.00:05:32
    Adding Tickets to Orders
  14. Урок 14.00:05:16
    Encapsulating Relationship Logic in the Model
  15. Урок 15.00:06:56
    Getting Started with Validation Testing
  16. Урок 16.00:05:30
    Reducing Duplication with Custom Assertions
  17. Урок 17.00:07:00
    Handling Failed Charges
  18. Урок 18.00:06:40
    Preventing Ticket Sales to Unpublished Concerts
  19. Урок 19.00:03:46
    Outlining the First Test Case
  20. Урок 20.00:08:20
    Adding Tickets to Concerts
  21. Урок 21.00:09:29
    Refusing Orders When There Are No More Tickets
  22. Урок 22.00:04:25
    Finishing the Feature Test
  23. Урок 23.00:05:59
    Cancelling Failed Orders
  24. Урок 24.00:07:49
    Refactoring and Redundant Test Coverage
  25. Урок 25.00:11:57
    Cleaning Up Our Tests
  26. Урок 26.00:07:32
    Asserting Against JSON Responses
  27. Урок 27.00:06:22
    Returning Order Details
  28. Урок 28.00:04:39
    This Design Sucks
  29. Урок 29.00:05:05
    Persisting the Order Amount
  30. Урок 30.00:06:01
    Removing the Need to Cancel Orders
  31. Урок 31.00:07:06
    Preparing for Extraction
  32. Урок 32.00:04:46
    Extracting a Named Constructor
  33. Урок 33.00:05:23
    Precomputing the Order Amount
  34. Урок 34.00:05:11
    Uncovering a New Domain Object
  35. Урок 35.00:03:48
    You Might Not Need a Mocking Framework
  36. Урок 36.00:01:43
    Uh Oh, a Race Condition!
  37. Урок 37.00:04:17
    Requestception
  38. Урок 38.00:05:38
    Hooking into Charges
  39. Урок 39.00:03:01
    Uh Oh, a Segfault!
  40. Урок 40.00:05:04
    Replicating the Failure at the Unit Level
  41. Урок 41.00:07:00
    Reserving Individual Tickets
  42. Урок 42.00:03:58
    Reserved Means Reserved!
  43. Урок 43.00:05:59
    That Guy Stole My Tickets!
  44. Урок 44.00:05:46
    Cancelling Reservations
  45. Урок 45.00:06:47
    Refactoring Mocks to Spies
  46. Урок 46.00:05:53
    A Change in Behavior
  47. Урок 47.00:05:38
    Deleting Stale Tests
  48. Урок 48.00:06:48
    Cleaning up a Loose Variable
  49. Урок 49.00:07:28
    Moving the Email to the Reservation
  50. Урок 50.00:09:50
    Refactoring "Long Parameter List" Using "Preserve Whole Object"
  51. Урок 51.00:06:12
    Green with Feature Envy
  52. Урок 52.00:09:04
    Avoiding Service Classes with Method Injection
  53. Урок 53.00:10:01
    Generating a Valid Payment Token
  54. Урок 54.00:04:05
    Retrieving the Last Charge
  55. Урок 55.00:04:37
    Making a Successful Charge
  56. Урок 56.00:12:18
    Dealing with Lingering State
  57. Урок 57.00:09:41
    Don't Mock What You Don't Own
  58. Урок 58.00:02:19
    Using Groups to Skip Integration Tests
  59. Урок 59.00:03:59
    Handling Invalid Payment Tokens
  60. Урок 60.00:04:28
    The Moment of Truth
  61. Урок 61.00:04:29
    When Interfaces Aren't Enough
  62. Урок 62.00:12:38
    Refactoring Towards Duplication
  63. Урок 63.00:08:10
    Capturing Charges with Callbacks
  64. Урок 64.00:07:42
    Making the Tests Identical
  65. Урок 65.00:07:42
    Extracting a Contract Test
  66. Урок 66.00:08:24
    Extracting the Failure Case
  67. Урок 67.00:04:49
    Upgrading to Laravel 5.4
  68. Урок 68.00:10:26
    Removing the BrowserKit Dependency
  69. Урок 69.00:07:52
    Sketching Out Order Confirmations
  70. Урок 70.00:05:21
    Driving out the Endpoint
  71. Урок 71.00:05:46
    Asserting Against View Data
  72. Урок 72.00:06:51
    Extracting a Finder Method
  73. Урок 73.00:08:49
    Making Static Data Real
  74. Урок 74.00:08:24
    Deciding What to Test in a View
  75. Урок 75.00:05:11
    Decoupling Data from Presentation
  76. Урок 76.00:06:28
    Fixing the Test Suite
  77. Урок 77.00:06:28
    Stubbing the Interface
  78. Урок 78.00:05:16
    Updating Our Unit Tests
  79. Урок 79.00:04:48
    Confirmation Number Characteristics
  80. Урок 80.00:07:29
    Testing the Confirmation Number Format
  81. Урок 81.00:08:44
    Ensuring Uniqueness
  82. Урок 82.00:05:59
    Refactoring to a Facade
  83. Урок 83.00:17:49
    Promoting Charges to Objects
  84. Урок 84.00:11:02
    Leveraging Our Contract Tests
  85. Урок 85.00:08:01
    Storing Charge Details with Orders
  86. Урок 86.00:10:27
    Deleting More Stale Code
  87. Урок 87.00:08:27
    Feature Test and JSON Updates
  88. Урок 88.00:09:12
    Claiming Tickets When Creating Orders
  89. Урок 89.00:10:54
    Assigning Codes When Claiming Tickets
  90. Урок 90.00:11:55
    The Birthday Problem
  91. Урок 91.00:11:44
    Integrating Hashids
  92. Урок 92.00:04:21
    Dealing with Out of Sync Mocks
  93. Урок 93.00:05:19
    Wiring It All Together
  94. Урок 94.00:02:52
    Ready to Demo
  95. Урок 95.00:10:35
    Using a Fake to Intercept Email
  96. Урок 96.00:10:39
    Testing Mailable Contents
  97. Урок 97.00:02:40
    Cleanup and Demo
  98. Урок 98.00:11:26
    Testing the Login Endpoint
  99. Урок 99.00:04:42
    Should You TDD Simple Templates?
  100. Урок 100.00:06:31
    Namespacing Our Test Suite
  101. Урок 101.00:05:22
    Getting Started with Laravel Dusk
  102. Урок 102.00:06:26
    QA Testing the Login Flow
  103. Урок 103.00:06:24
    Preventing Guests from Adding Concerts
  104. Урок 104.00:14:20
    Adding a Valid Concert
  105. Урок 105.00:09:49
    Validation and Redirects
  106. Урок 106.00:04:21
    Converting Empty Strings to Null
  107. Урок 107.00:09:13
    Reducing Noise with Form Factories
  108. Урок 108.00:06:49
    Connecting Promoters and Concerts
  109. Урок 109.00:05:46
    Autopublishing New Concerts
  110. Урок 110.00:12:09
    Asserting Against View Objects
  111. Урок 111.00:05:47
    Avoiding Sort-Sensitive Tests
  112. Урок 112.00:11:39
    Refactoring Assertions with Macros
  113. Урок 113.00:05:29
    Viewing the Update Form
  114. Урок 114.00:09:27
    The First Update Test
  115. Урок 115.00:09:14
    Driving Out Basic Concert Updates
  116. Урок 116.00:11:31
    Restricting Updates to Unpublished Concerts
  117. Урок 117.00:06:26
    Storing the Intended Ticket Quantity
  118. Урок 118.00:05:25
    Updating the Other Tests
  119. Урок 119.00:07:52
    Refactoring Away Some Test Duplication
  120. Урок 120.00:08:28
    Creating Tickets at Time of Publish
  121. Урок 121.00:07:44
    Custom Factory Classes
  122. Урок 122.00:07:35
    Discovering a New Resource
  123. Урок 123.00:11:12
    Creating Published Concerts
  124. Урок 124.00:04:03
    Adding Concerts without Publishing
  125. Урок 125.00:08:47
    Pushing Logic Out of the View
  126. Урок 126.00:06:20
    More Custom Assertion Fun
  127. Урок 127.00:08:22
    Calculating Tickets Sold
  128. Урок 128.00:08:58
    Making the Progress Bar Work
  129. Урок 129.00:08:40
    Total Revenue and a Relationship Bug
  130. Урок 130.00:11:28
    Creating a Custom OrderFactory
  131. Урок 131.00:12:15
    Asserting Against Sort Order
  132. Урок 132.00:03:41
    Splitting Large Tests
  133. Урок 133.00:12:31
    Storing Messages for Attendees
  134. Урок 134.00:09:27
    Confirming That a Job Was Dispatched
  135. Урок 135.00:18:29
    Unit Testing the Job
  136. Урок 136.00:11:16
    Refactoring for Robustness
  137. Урок 137.00:04:11
    Mailable Testing Refresher and Demo
  138. Урок 138.00:07:41
    Upgrading to Laravel 5.5
  139. Урок 139.00:10:43
    Faking Uploads and File Systems
  140. Урок 140.00:09:16
    Storing Files and Comparing Content
  141. Урок 141.00:07:45
    Validating Poster Images
  142. Урок 142.00:05:39
    Optional Files and the Null Object Pattern
  143. Урок 143.00:10:41
    Testing Events
  144. Урок 144.00:11:42
    Testing the Event Listener
  145. Урок 145.00:12:26
    Resizing the Posted Image
  146. Урок 146.00:10:51
    Optimizing the Image Size
  147. Урок 147.00:03:40
    Upgrading Laravel and Deleting Some Code
  148. Урок 148.00:10:25
    Viewing an Unused Invitation
  149. Урок 149.00:07:29
    Viewing Used or Invalid Invitations
  150. Урок 150.00:12:46
    Registering with a Valid Invitation
  151. Урок 151.00:05:20
    Registering with an Invalid Invitation
  152. Урок 152.00:05:54
    Validating Promoter Registration
  153. Урок 153.00:17:40
    Testing a Console Command
  154. Урок 154.00:05:52
    Sending Promoters an Invitation Email
  155. Урок 155.00:07:53
    Test-Driving the Email Contents
  156. Урок 156.00:10:55
    Getting Cozy with Stripe Connect
  157. Урок 157.00:10:05
    Authorizing with Stripe
  158. Урок 158.00:17:44
    Exchanging Tokens
  159. Урок 159.00:13:29
    Unit Testing Middleware
  160. Урок 160.00:09:43
    Testing Callbacks with Invokables
  161. Урок 161.00:08:16
    Testing That Middleware Is Applied
  162. Урок 162.00:03:30
    Updating Factories and a Speed Trick
  163. Урок 163.00:10:43
    Total Charges for a Specific Account
  164. Урок 164.00:07:47
    Paying Promoters Directly
  165. Урок 165.00:16:53
    Splitting Payments with Stripe
  166. Урок 166.00:04:36
    It's Alive