def parse_product(self, response):
        product = Product()

        product['url'] = response.url

        # NAME
        name = xtract(response, "//h1/text()")
        add_field(product, 'name', name)

        # ITEM NUM
        item_num = xtract(response, xcontains('span', 'style-number'))
        add_field(product, 'item_num', item_num, lambda x: x.split('#')[-1].strip())

        # PRICE
        price = xtract(response, xcontains('span', 'price-current'))
        if len(price) == 0:
            price = xtract(response, xcontains('span', 'regular-price'))

        add_field(product, 'price', price, to_float)

        data_script = response.xpath("//script[contains(., 'initialData')]/text()").extract()
        if len(data_script) > 0:
            product['initial_data'] = transform_initial_data(data_script[0])

        yield product
    def test_add_field(self):
        item = {}
        add_field(item, 'name', ['ddd'])
        assert item['name'] == 'ddd'

        add_field(item, 'dog', 'ddd')
        assert item['dog'] == 'ddd'

        add_field(item, 'cat', [])
        assert item['cat'] == None