Skip to content

Commit 010b499

Browse files
[EngCom] Public Pull Requests - 2.3-develop
- merged latest code from mainline branch
2 parents 4cde61d + a24abca commit 010b499

File tree

7 files changed

+167
-55
lines changed

7 files changed

+167
-55
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="../../../../../../../dev/tests/acceptance/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Test/etc/actionGroupSchema.xsd">
10+
11+
<!--Assert That Shipping And Billing Address are the same-->
12+
<actionGroup name="AssertThatShippingAndBillingAddressTheSame">
13+
<!--Get shipping and billing addresses-->
14+
<grabTextFrom selector="{{ShipmentFormSection.shippingAddress}}" stepKey="shippingAddr"/>
15+
<grabTextFrom selector="{{ShipmentFormSection.billingAddress}}" stepKey="billingAddr"/>
16+
<!--Make sure that shipping and billing addresses are different-->
17+
<see userInput="Shipping Address" stepKey="seeShippingAddress"/>
18+
<see userInput="Billing Address" stepKey="seeBillingAddress"/>
19+
<assertEquals stepKey="assert" actual="$billingAddr" expected="$shippingAddr"/>
20+
</actionGroup>
21+
22+
</actionGroups>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="../../../../../../../dev/tests/acceptance/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Page/etc/SectionObject.xsd">
11+
12+
<section name="ShipmentFormSection">
13+
<element name="shippingAddress" type="textarea" selector="//*[@class='box box-billing-address']//address"/>
14+
<element name="billingAddress" type="textarea" selector="//*[@class='box box-shipping-address']//address"/>
15+
</section>
16+
</sections>
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="../../../../../../../dev/tests/acceptance/vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
11+
<test name="IdentityOfDefaultBillingAndShippingAddressTest">
12+
<annotations>
13+
<features value="Customer"/>
14+
<title value="Checking assignment of default billing address after placing an orde"/>
15+
<description value="In 'Address book' field 'Default Billing Address' should be the same as 'Default Shipping Address'"/>
16+
<severity value="MAJOR"/>
17+
<testCaseId value="MAGETWO-94108"/>
18+
<stories value="MAGETWO-62891: New address is not marked as 'Default Billing'"/>
19+
<group value="customer"/>
20+
</annotations>
21+
22+
<before>
23+
<!--Create product-->
24+
<createData stepKey="category" entity="SimpleSubCategory"/>
25+
<createData stepKey="product" entity="SimpleProduct">
26+
<requiredEntity createDataKey="category"/>
27+
</createData>
28+
</before>
29+
30+
<!--Go to Storefront-->
31+
<amOnPage url="" stepKey="DoToStorefront"/>
32+
33+
<!-- Fill out form for a new user with address -->
34+
<actionGroup ref="SignUpNewUserFromStorefrontActionGroup" stepKey="signUpNewUser">
35+
<argument name="Customer" value="Simple_US_Customer_NY"/>
36+
</actionGroup>
37+
38+
<!-- Add simple product to cart -->
39+
<actionGroup ref="AddSimpleProductToCart" stepKey="addProductToCart1">
40+
<argument name="product" value="$$product$$"/>
41+
</actionGroup>
42+
43+
<!--Proceed to shipment-->
44+
<amOnPage url="{{CheckoutPage.url}}/" stepKey="goToCheckout"/>
45+
<waitForPageLoad stepKey="waitForShippingSection"/>
46+
47+
<!--Fill shipment form-->
48+
<actionGroup ref="LoggedInUserCheckoutFillingShippingSectionActionGroup" stepKey="checkoutFillingShippingSection" >
49+
<argument name="customerVar" value="Simple_US_Customer_NY" />
50+
<argument name="customerAddressVar" value="US_Address_NY" />
51+
</actionGroup>
52+
53+
<!--Fill cart data-->
54+
<actionGroup ref="CheckoutSelectCheckMoneyOrderPaymentActionGroup" stepKey="selectCheckMoneyOrderPayment" />
55+
56+
<actionGroup ref="CheckoutPlaceOrderActionGroup" stepKey="placeorder">
57+
<argument name="orderNumberMessage" value="CONST.successCheckoutOrderNumberMessage" />
58+
<argument name="emailYouMessage" value="CONST.successCheckoutEmailYouMessage" />
59+
</actionGroup>
60+
<!--Go To My Account-->
61+
<amOnPage stepKey="goToMyAccountPage" url="/customer/account/"/>
62+
63+
<!--Assert That Shipping And Billing Address are the same-->
64+
<actionGroup ref="AssertThatShippingAndBillingAddressTheSame" stepKey="assertThatShippingAndBillingAddressTheSame"/>
65+
66+
<after>
67+
<!--Delete created Product-->
68+
<deleteData stepKey="deleteProduct" createDataKey="product"/>
69+
<deleteData stepKey="deleteCategory" createDataKey="category"/>
70+
</after>
71+
</test>
72+
</tests>

app/code/Magento/Newsletter/Test/Unit/Model/Queue/TransportBuilderTest.php

Lines changed: 20 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,43 @@ class TransportBuilderTest extends \PHPUnit\Framework\TestCase
4545
*/
4646
protected $mailTransportFactoryMock;
4747

48+
/**
49+
* @var \Magento\Framework\Mail\MessageInterfaceFactory | \PHPUnit_Framework_MockObject_MockObject
50+
*/
51+
private $messageFactoryMock;
52+
4853
/**
4954
* @return void
5055
*/
5156
public function setUp()
5257
{
5358
$objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
5459
$this->templateFactoryMock = $this->createMock(\Magento\Framework\Mail\Template\FactoryInterface::class);
55-
$this->messageMock = $this->createMock(\Magento\Framework\Mail\Message::class);
60+
$this->messageMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterface::class)
61+
->disableOriginalConstructor()
62+
->setMethods(['setBodyHtml', 'setSubject'])
63+
->getMockForAbstractClass();
5664
$this->objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
5765
$this->senderResolverMock = $this->createMock(\Magento\Framework\Mail\Template\SenderResolverInterface::class);
5866
$this->mailTransportFactoryMock = $this->getMockBuilder(
5967
\Magento\Framework\Mail\TransportInterfaceFactory::class
6068
)->disableOriginalConstructor()
6169
->setMethods(['create'])
6270
->getMock();
71+
$this->messageFactoryMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterfaceFactory::class)
72+
->disableOriginalConstructor()
73+
->setMethods(['create'])
74+
->getMockForAbstractClass();
75+
$this->messageFactoryMock->expects($this->atLeastOnce())->method('create')->willReturn($this->messageMock);
6376
$this->builder = $objectManagerHelper->getObject(
6477
$this->builderClassName,
6578
[
6679
'templateFactory' => $this->templateFactoryMock,
6780
'message' => $this->messageMock,
6881
'objectManager' => $this->objectManagerMock,
6982
'senderResolver' => $this->senderResolverMock,
70-
'mailTransportFactory' => $this->mailTransportFactoryMock
83+
'mailTransportFactory' => $this->mailTransportFactoryMock,
84+
'messageFactory' => $this->messageFactoryMock
7185
]
7286
);
7387
}
@@ -108,7 +122,7 @@ public function testGetTransport(
108122
$template->expects($this->once())
109123
->method('getProcessedTemplate')
110124
->with($vars)
111-
->will($this->returnValue($bodyText));
125+
->willReturn($bodyText);
112126
$template->expects($this->once())
113127
->method('setTemplateFilter')
114128
->with($filter);
@@ -123,46 +137,8 @@ public function testGetTransport(
123137
$this->returnValue($template)
124138
);
125139

126-
$this->messageMock->expects(
127-
$this->once()
128-
)->method(
129-
'setSubject'
130-
)->with(
131-
$this->equalTo('Email Subject')
132-
)->will(
133-
$this->returnSelf()
134-
);
135-
$this->messageMock->expects(
136-
$this->once()
137-
)->method(
138-
'setBodyHtml'
139-
)->with(
140-
$this->equalTo($bodyText)
141-
)->will(
142-
$this->returnSelf()
143-
);
144-
145-
$transport = $this->createMock(\Magento\Framework\Mail\TransportInterface::class);
146-
147-
$this->mailTransportFactoryMock->expects(
148-
$this->at(0)
149-
)->method(
150-
'create'
151-
)->with(
152-
$this->equalTo(['message' => $this->messageMock])
153-
)->will(
154-
$this->returnValue($transport)
155-
);
156-
157-
$this->objectManagerMock->expects(
158-
$this->at(0)
159-
)->method(
160-
'create'
161-
)->with(
162-
$this->equalTo(\Magento\Framework\Mail\Message::class)
163-
)->will(
164-
$this->returnValue($transport)
165-
);
140+
$this->messageMock->expects($this->once())->method('setBodyHtml')->willReturnSelf();
141+
$this->messageMock->expects($this->once())->method('setSubject')->willReturnSelf();
166142

167143
$this->builder->setTemplateIdentifier(
168144
'identifier'
@@ -174,8 +150,6 @@ public function testGetTransport(
174150
$data
175151
);
176152

177-
$result = $this->builder->getTransport();
178-
179-
$this->assertInstanceOf(\Magento\Framework\Mail\TransportInterface::class, $result);
153+
$this->builder->getTransport();
180154
}
181155
}

app/code/Magento/Quote/Model/QuoteManagement.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,10 @@ protected function _prepareCustomerQuote($quote)
564564
//Make provided address as default shipping address
565565
$shippingAddress->setIsDefaultShipping(true);
566566
$hasDefaultShipping = true;
567+
if (!$hasDefaultBilling && !$billing->getSaveInAddressBook()) {
568+
$shippingAddress->setIsDefaultBilling(true);
569+
$hasDefaultBilling = true;
570+
}
567571
}
568572
//save here new customer address
569573
$shippingAddress->setCustomerId($quote->getCustomerId());

lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
use Magento\Framework\App\TemplateTypesInterface;
1212
use Magento\Framework\Exception\LocalizedException;
1313
use Magento\Framework\Mail\MessageInterface;
14+
use Magento\Framework\Mail\MessageInterfaceFactory;
1415
use Magento\Framework\Mail\TransportInterfaceFactory;
1516
use Magento\Framework\ObjectManagerInterface;
1617
use Magento\Framework\Phrase;
1718

1819
/**
1920
* @api
21+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2022
*/
2123
class TransportBuilder
2224
{
@@ -88,25 +90,35 @@ class TransportBuilder
8890
*/
8991
protected $mailTransportFactory;
9092

93+
/**
94+
* @var \Magento\Framework\Mail\MessageInterfaceFactory
95+
*/
96+
private $messageFactory;
97+
9198
/**
9299
* @param FactoryInterface $templateFactory
93100
* @param MessageInterface $message
94101
* @param SenderResolverInterface $senderResolver
95102
* @param ObjectManagerInterface $objectManager
96103
* @param TransportInterfaceFactory $mailTransportFactory
104+
* @param MessageInterfaceFactory $messageFactory
105+
*
106+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
97107
*/
98108
public function __construct(
99109
FactoryInterface $templateFactory,
100110
MessageInterface $message,
101111
SenderResolverInterface $senderResolver,
102112
ObjectManagerInterface $objectManager,
103-
TransportInterfaceFactory $mailTransportFactory
113+
TransportInterfaceFactory $mailTransportFactory,
114+
MessageInterfaceFactory $messageFactory = null
104115
) {
105116
$this->templateFactory = $templateFactory;
106-
$this->message = $message;
107117
$this->objectManager = $objectManager;
108118
$this->_senderResolver = $senderResolver;
109119
$this->mailTransportFactory = $mailTransportFactory;
120+
$this->messageFactory = $messageFactory ?: $this->objectManager->get(MessageInterfaceFactory::class);
121+
$this->message = $this->messageFactory->create();
110122
}
111123

112124
/**
@@ -242,7 +254,7 @@ public function getTransport()
242254
*/
243255
protected function reset()
244256
{
245-
$this->message = $this->objectManager->create(\Magento\Framework\Mail\Message::class);
257+
$this->message = $this->messageFactory->create();
246258
$this->templateIdentifier = null;
247259
$this->templateVars = null;
248260
$this->templateOptions = null;

lib/internal/Magento/Framework/Mail/Test/Unit/Template/TransportBuilderTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88

99
use Magento\Framework\App\TemplateTypesInterface;
1010
use Magento\Framework\Mail\MessageInterface;
11+
use Magento\Framework\Mail\MessageInterfaceFactory;
1112

13+
/**
14+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
15+
*/
1216
class TransportBuilderTest extends \PHPUnit\Framework\TestCase
1317
{
1418
/**
@@ -41,6 +45,11 @@ class TransportBuilderTest extends \PHPUnit\Framework\TestCase
4145
*/
4246
protected $senderResolverMock;
4347

48+
/**
49+
* @var \Magento\Framework\Mail\MessageInterfaceFactory| \PHPUnit_Framework_MockObject_MockObject
50+
*/
51+
private $messageFactoryMock;
52+
4453
/**
4554
* @var \PHPUnit_Framework_MockObject_MockObject
4655
*/
@@ -60,15 +69,21 @@ protected function setUp()
6069
\Magento\Framework\Mail\TransportInterfaceFactory::class
6170
)->disableOriginalConstructor()
6271
->setMethods(['create'])
63-
->getMock();
72+
->getMockForAbstractClass();
73+
$this->messageFactoryMock = $this->getMockBuilder(\Magento\Framework\Mail\MessageInterfaceFactory::class)
74+
->disableOriginalConstructor()
75+
->setMethods(['create'])
76+
->getMockForAbstractClass();
77+
$this->messageFactoryMock->expects($this->atLeastOnce())->method('create')->willReturn($this->messageMock);
6478
$this->builder = $objectManagerHelper->getObject(
6579
$this->builderClassName,
6680
[
6781
'templateFactory' => $this->templateFactoryMock,
6882
'message' => $this->messageMock,
6983
'objectManager' => $this->objectManagerMock,
7084
'senderResolver' => $this->senderResolverMock,
71-
'mailTransportFactory' => $this->mailTransportFactoryMock
85+
'mailTransportFactory' => $this->mailTransportFactoryMock,
86+
'messageFactory' => $this->messageFactoryMock
7287
]
7388
);
7489
}
@@ -122,10 +137,7 @@ public function testGetTransport($templateType, $messageType, $bodyText, $templa
122137
->with($this->equalTo(['message' => $this->messageMock]))
123138
->willReturn($transport);
124139

125-
$this->objectManagerMock->expects($this->at(0))
126-
->method('create')
127-
->with($this->equalTo(\Magento\Framework\Mail\Message::class))
128-
->willReturn($transport);
140+
$this->messageFactoryMock->expects($this->once())->method('create')->willReturn($transport);
129141

130142
$this->builder->setTemplateIdentifier('identifier')->setTemplateVars($vars)->setTemplateOptions($options);
131143
$this->assertInstanceOf(\Magento\Framework\Mail\TransportInterface::class, $this->builder->getTransport());

0 commit comments

Comments
 (0)