2010-10-28 14 views
12

के साथ JQuery UI सॉर्ट करने योग्य का परीक्षण कैसे कर सकता हूं मैं कुछ वस्तुओं को पुन: व्यवस्थित करने के लिए एक ककड़ी/कैपिबरा परीक्षण लिखने की कोशिश कर रहा हूं और फिर उन्हें वापस सहेज सकता हूं। इस पर सबसे अच्छा तरीका कैसे है?मैं ककड़ी

उत्तर

1

मैं इस तरह एक वेब कदम का उपयोग कर रहा है और यह ठीक काम करता है:

When /^I drag "([^"]*)" on top$/ do |name| 
    item = Item.find_by_name(name) 
    sleep 0.2 
    src = find("#item_id_#{item.id}") 
    dest = find("div.title") 
    src.drag_to(dest) 
end 
+1

मुझे यह समाधान काम करने के लिए नहीं मिला। किसी और के साथ सफलता है? – Francois

+0

rspec + capybara (ककड़ी नहीं) का उपयोग करके और मैं इसे काम करने के लिए नहीं मिल सकता। तत्वों को खींचना (जैसे विधि में सत्य लौटाता है) लेकिन ऑन-स्क्रीन ऑर्डर नहीं बदला जाता है (प्रति save_and_open_screenshot) या सीधे टेक्स्ट को चेक करना। – BM5k

2

drag_to विधि मेरे लिए काम नहीं किया।

page.execute_script %Q{ 
    $.getScript("/javascripts/jquery.simulate.js", function(){ 
    distance_between_elements = $('.task:nth-child(2)').offset().top - $('.task:nth-child(1)').offset().top; 
    height_of_elements = $('.task:nth-child(1)').height(); 
    dy = (distance_between_elements * ($('.task').size() - 1)) + height_of_elements/2; 

    first = $('.task:first'); 
    first.simulate('drag', {dx:0, dy:dy}); 
    }); 
}     
+0

हाय @ फ्रैंकोइस। मैंने आपके कोड की कोशिश की है, लेकिन simulate.js लाइब्रेरी सॉर्ट करने योग्य सूचियों के साथ काम नहीं करती है। मैंने एक उदाहरण बनाया है जहां मैंने अनुकरण प्लगइन को एम्बेड किया है लेकिन इसे संशोधित किया है ताकि यह चरणों को धीमा कर दे। जैसा कि आप देखेंगे, अनुकरण प्लगइन खींच रहा है, लेकिन क्रमबद्ध सही ढंग से प्रतिक्रिया नहीं दे रहा है। एक उदाहरण देखने के लिए [http://jsbin.com/efuyef/7/edit#javascript,live ](http://jsbin.com/efuyef/7/edit#javascript,live) पर जाएं जहां ड्रैगगेबल काम करता है और क्रमबद्ध विफल रहता है । मैं भी ककड़ी के लिए कुछ ऐसा करने की कोशिश कर रहा हूं, इसलिए इसका समाधान बहुत अच्छा होगा। आप काम करने के लिए कैसे मिला? –

11

मैं हल करने के लिए एक JQuery प्लगइन का विकास किया है: लेकिन मैं अपने सूची में पहले तत्व पैदा करने के लिए सक्षम मेरी capybara सेलेनियम परीक्षण का उपयोग कर jquery.simulate.js में निम्नलिखित शामिल करके पिछले स्थान तक खींचा जा रहा था यह समस्या, jquery.simulate.drag-sortable.js देखें जिसमें परीक्षण और उदाहरणों के सूट के साथ एक प्लगइन शामिल है।

आशा है कि आपको यह उपयोगी लगेगा! प्रतिक्रिया का स्वागत है।

मैट

+0

एक आकर्षण की तरह काम करता है। धन्यवाद! – artemave

+0

मैंने प्रोजेक्ट के रीडमे में इसका उपयोग करके एक उदाहरण ककड़ी कदम जोड़ा है। –

0

मेरे लिए, #drag_to काम है, तथापि, अपनी शक्ति सीमित होने लगते था।

# Super-primitive step 
When /^I drag the first table row down$/ do 
    element = find('tbody tr:nth-child(1)') 
    # drag_to needs to drag the element beyond the actual target to really perform 
    # the reordering 
    target = find('tbody tr:nth-child(3)') 

    element.drag_to target 
end 

यह दूसरी पंक्ति के साथ पहली बार स्वैप जाएगा:

आदेश में एक यूआई-sortable तालिका पंक्ति नीचे ले जाने के लिए, मैं तीन पंक्तियों के साथ एक तालिका बनाने के लिए, तो यह ककड़ी कदम को चलाने के लिए किया था। मेरी व्याख्या यह है कि कैपिबरा काफी दूर नहीं खींचता है, इसलिए मैंने इसे अपने वास्तविक लक्ष्य से परे एक लक्ष्य दिया।

नोट: मैंने tolerance: 'pointer 'के साथ UI-sortable कॉन्फ़िगर किया है।

संबंधित मुद्दे