Failed Conditions
Pull Request — experimental/sf (#3236)
by Kentaro
49:41 queued 37:58
created

ProductDetailPage   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 62
Duplicated Lines 29.03 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 18
loc 62
rs 10
c 0
b 0
f 0
wmc 10
lcom 0
cbo 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/*
3
 * This file is part of EC-CUBE
4
 *
5
 * Copyright(c) 2000-2017 LOCKON CO.,LTD. All Rights Reserved.
6
 *
7
 * http://www.lockon.co.jp/
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
 */
23
24
namespace Page\Front;
25
26
27
class ProductDetailPage extends AbstractFrontPage
28
{
29
    public function __construct(\AcceptanceTester $I)
30
    {
31
        parent::__construct($I);
32
    }
33
34
    public static function go($I, $id)
35
    {
36
        $page = new self($I);
37
        return $page->goPage('products/detail/'.$id);
38
    }
39
40
    public function カテゴリ選択($categories)
41
    {
42
        $xpath = "//*[@class='ec-layoutRole__header']/";
43
        foreach ($categories as $i=>$category) {
44
            $xpath .= "/ul/li/a[contains(text(), '$category')]/parent::node()";
45
            $this->tester->waitForElement(['xpath' => $xpath]);
46
            $this->tester->moveMouseOver(['xpath' => $xpath]);
47
        }
48
        $this->tester->click(['xpath' => $xpath]);
49
        return $this;
50
    }
51
52
    public function サムネイル切替($num)
53
    {
54
        $this->tester->click("div.item_nav div.slick-list div.slick-track div.slideThumb:nth-child(${num})");
55
        return $this;
56
    }
57
58
    public function サムネイル画像URL()
59
    {
60
        return $this->tester->grabAttributeFrom('div.item.slick-slide.slick-current.slick-active img', 'src');
61
    }
62
63
    public function 規格選択($array)
64
    {
65
        foreach ($array as $index=>$option) {
66
            $this->tester->selectOption(['id' => 'classcategory_id'.($index+1)], $option);
67
        }
68
        return $this;
69
    }
70
71
    /**
72
     * @param $num|int
73
     * @return ProductDetailPage
74
     */
75
    public function カートに入れる($num)
76
    {
77
        $this->tester->fillField(['id' => 'quantity'], $num);
78
        $this->tester->click(['id' => 'add-cart']);
79
        $this->tester->wait(1);
80
        return $this;
81
    }
82
83
    public function お気に入りに追加()
84
    {
85
        $this->tester->click('#favorite');
86
        return $this;
87
    }
88
}