예제 #1
0
    def test_description_delete(self):
        """ Tests that delete works
        """
        expected_descriptions = [
            'visible gloves',
            'visible gloves',
            'visible gloves',
        ]

        select_listings_to_edit(self.driver, 'Delete')
        d = self.driver
        bp = BulkPage(d)

        input_field = bp.operation_input_description()
        send_keys(input_field, 'in')
        click(bp.operation_apply())

        descriptions = bp.listing_descriptions()
        assert descriptions == expected_descriptions

        apply_class = bp.operation_apply().get_attribute('class')
        assert 'inactive' in apply_class.split(' ')
예제 #2
0
    def test_description_add_after(self):
        """ Tests that correct text can be added after
        """
        expected_descriptions = [
            'invisible gloves hello',
            'invisible gloves hello',
            'invisible gloves hello',
        ]

        select_listings_to_edit(self.driver, 'Add After')
        d = self.driver
        bp = BulkPage(d)

        input_field = bp.operation_input_description()
        send_keys(input_field, ' hello')
        click(bp.operation_apply())

        descriptions = bp.listing_descriptions()
        assert descriptions == expected_descriptions

        apply_class = bp.operation_apply().get_attribute('class')
        assert 'inactive' in apply_class.split(' ')
예제 #3
0
    def test_etsy_upload(self):
        """
        Verify that listings can be fetched from Etsy, changed in vela GUI and pushed back to Etsy
        """

        # debug
        # with open('tests-etsy/data.json') as f:
        #     data = json.load(f)
        # self.validate_listings(data, '20161124_184056')
        # return

        # Delete log files
        logs = Logs(os.environ['LOG_CLEAN_SCRIPT'],
                    os.environ['LOG_GREP_SCRIPT'])
        logs.empty()

        timestamp = strftime("%Y%m%d_%H%M%S")

        credentials = self.get_credentials()
        etsy = EtsyApiForATs(credentials)

        # Delete our section from Etsy
        log("Deleting section from Etsy")
        etsy.remove_at_section(AT_SECTION)

        # Delete and re-create listings on Etsy
        log("Removing AT listings from Etsy")
        etsy.remove_at_listings()
        log("Creating AT listings on Etsy")
        st_id = etsy.get_shipping_template_id()
        for i in range(3):
            title = "{}_{:02d}".format(AT_TITLE, i)
            etsy.create_listing(
                dict(self.NEW_LISTING,
                     title=title,
                     taxonomy_id=1,
                     shipping_template_id=st_id))

        listings = etsy.get_listings()
        for listing_id, title in ((l['listing_id'], l['title'])
                                  for l in listings
                                  if l['title'][:len(AT_TITLE)] == AT_TITLE):
            print(listing_id, title)

        # Clean up Vela DB, Load new shop
        log("Cleaning Vela DB")
        # Reset feature flags for features that are not in production yet
        self.db.reset_user_profile_flags(self.user_id, BETA_FEATURE_FLAGS)
        self.reload_shop()

        log("Making UI changes")
        self.go_to_bulk()
        bp = BulkPage(self.driver)

        # Edit title
        log("   title")
        bp.edit_part('Title').click()
        bp.select_operation('Add After')
        send_keys(bp.operation_input(), ' ' + timestamp)
        bp.operation_apply().click()

        # Edit description
        log("   description")
        bp.edit_part('Description').click()
        bp.select_operation('Add After')
        send_keys(bp.operation_input_description(), ' ' + timestamp)
        bp.operation_apply().click()

        # Edit category
        log("   category")
        bp.edit_part('Category').click()
        bp.select_category(AT_CATEGORIES)
        bp.operation_apply().click()

        # Edit photos
        log("   photos")
        bp.edit_part('Photos').click()
        with Photos(self.driver) as photos:
            for i, img in enumerate(AT_IMAGES):
                photos.select_photo(
                    i, os.path.join(photos.photo_dir, img['file']))
            bp.operation_apply().click()

        # Edit tags
        log("   tags")
        bp.edit_part('Tags').click()
        send_keys(bp.operation_input(), ', '.join(AT_TAGS))
        bp.operation_apply().click()

        # Edit materials
        log("   materials")
        bp.edit_part('Materials').click()
        send_keys(bp.operation_input(), ', '.join(AT_MATERIALS))
        bp.operation_apply().click()

        # Edit section
        log("   section")
        bp.edit_part('Section').click()
        bp.operation_select().click()
        sleep(2)
        send_keys(bp.operation_menu_new_item_input(), AT_SECTION + Keys.RETURN)
        bp.operation_apply().click()

        # Edit Occasion
        log("   occasion")
        bp.edit_part('Occasion').click()
        bp.select_occasion(AT_OCCASION)
        bp.operation_apply().click()

        # Edit Holiday
        log("   holiday")
        bp.edit_part('Holiday').click()
        bp.select_holiday(AT_HOLIDAY)
        bp.operation_apply().click()

        # Edit variations
        log("   variations")
        bp.edit_part('Variations').click()
        biv = BulkPageInventoryVariations(self.driver, self.ts)
        bp.select_category(AT_CATEGORIES)
        bulk_row = biv.bulk_edit_row
        biv.set_property(bulk_row, 0, AT_VAR_PROPERTY_NAME)
        for option_name in AT_VAR_OPTION_VALUES:
            biv.add_option(bulk_row, 0, option_name)
        bp.operation_apply().click()

        # Edit price
        log("   price")
        bp.edit_part('Price').click()
        bip = BulkPageInventoryPrice(self.driver, self.ts)
        bip.select_operation('Change To')
        input_field = bip.operation_input()
        send_keys(input_field, AT_PRICE)
        bp.operation_apply().click()

        # Edit quantity
        log("   quantity")
        bp.edit_part('Quantity').click()
        biq = BulkPageInventoryQuantity(self.driver, self.ts)
        biq.select_operation('Change To')
        input_field = biq.operation_input()
        send_keys(input_field, str(AT_QUANTITY))
        biq.operation_apply().click()

        # Edit Sku
        log("   sku")
        bp.edit_part('SKU').click()
        bis = BulkPageInventorySku(self.driver, self.ts)
        input_field = bis.operation_input()
        send_keys(input_field, AT_SKU)
        bis.operation_apply().click()

        # Sync Updates
        log("Syncing Updates")
        bp.sync_updates_button().click()
        sleep(10)
        self.wait_for_synced()

        # Get listings from Etsy
        data = etsy.get_at_listings_details()
        self.validate_listings(data, timestamp)

        # Check logs for errors
        logs.check_for_errors()