I would test the fact that html generated work properly, I guess Selenium
is the only way, but if I can interact with html object from python with
someting like HTMLTestRunner (
http://tungwaiyip.info/software/HTMLTestRunner.html)... I never had time to
think about test cases worth doing over generated html... Actually, you
maybe right that it only allow to see if html get generated or compare html
generated to an reference html (mean something like having app serving to
test another app to make sure notting get modify on one hand without the
other know it... Mean a lot of work merging stuff between repo in orther to
maintain test case = a lot of works).

Could you provide an example of good controller and view codes? Model is
easier...

In web2py, I am not sure we can really divide each differents part in M-V-C
container... Look how you define validators over model field definition (I
know old raised point).

Richard



On Tue, Jan 27, 2015 at 3:42 PM, Derek <sp1d...@gmail.com> wrote:

> You are wrong. If you need to test your views, you would have to use some
> kind of testing tool like Selenium, of course. However, you should not be
> generating views within the controllers, they have separate functions. It
> makes no sense. Besides, what are you going to test, the generation of the
> html?
>
> On Tuesday, January 27, 2015 at 12:13:09 PM UTC-7, Richard wrote:
>>
>> Derek,
>>
>> I understand your point, but from the testing point of view, the only
>> option remaining for testing view is Selenium HQ which is slow, so if you
>> want to be able to test your controller that depend a lot of the view, what
>> I can only see is to limit as much as possible the view to unpack web2py
>> controller variables packed with everything...
>>
>> Do I am wrong in thinking that?
>>
>> Richard
>>
>> On Tue, Jan 27, 2015 at 12:19 PM, Derek <sp1...@gmail.com> wrote:
>>
>>> What I mean by 'you are mixing your view with your controller' is that
>>> you are using your controller to build HTML that will be used as-is. You
>>> should never create HTML in your controllers, leave that to the views. The
>>> whole point of MVC is that each part has a very specific purpose. Don't
>>> create your models in your controllers or views, don't create html in your
>>> models or controllers, and don't put logic in models and views.
>>>
>>> https://www.youtube.com/watch?v=8FWdQVNeTlI
>>>
>>>
>>> On Tuesday, January 27, 2015 at 10:15:50 AM UTC-7, Derek wrote:
>>>>
>>>> Well, where do I start? It looks like you are a victim of copy and
>>>> paste coding. Delete your two functions and start over again.
>>>>
>>>> That said, you are mixing your view with your controller, please don't
>>>> do that. I would suggest you use this web2pyslice as a starting point.
>>>> (yes, I wrote it)
>>>>
>>>> http://www.web2pyslices.com/slice/show/1724/cascading-dropdo
>>>> wns-simplified
>>>>
>>>>
>>>>
>>>>
>>>> On Monday, January 26, 2015 at 1:28:20 PM UTC-7, Omi Chiba wrote:
>>>>>
>>>>> I have a three dropdown and the value will be dynamically changed
>>>>> using ajax. It's working fine but something is wrong. In second dropdown
>>>>> (id="lead_name"), I specify jQuery('#model_name') but it's
>>>>> actually jQuery('#leadl_name') but then when the value for the second drop
>>>>> changed, the value disappear from the second and third. When I keep the
>>>>> current way (which is wrong name) it's working as expected.... Do you guys
>>>>> know what's wrong?
>>>>>
>>>>> This is my view
>>>>>
>>>>> <form enctype="multipart/form-data" action="{{URL()}}" method="post">
>>>>>                 <tr>
>>>>>                 <td><select name='model_name' onchange="jQuery(
>>>>> '#model_name').empty();
>>>>>                     ajax('lead_ajax', ['model_name'], 'lead_name');">
>>>>>                     {{for model in models:}}
>>>>>                         <option value="{{=model.Name}}"
>>>>>                         {{=" selected='selected'" if str(model.Name)=
>>>>> =request.vars.model_name else ""}}>
>>>>>                         {{=model.Name}}
>>>>>                         </option>
>>>>>                     {{pass}}
>>>>>                 </select></td>
>>>>>                 <td><select id='lead_name' name='lead_name' onchange="
>>>>> jQuery('#model_name').empty();
>>>>>                     ajax('block_ajax', ['lead_name'], 'block_name');">
>>>>>                     {{for lead in leads:}}
>>>>>                         <option value="{{=lead.Name}}"
>>>>>                         {{=" selected='selected'" if str(lead.Name)=
>>>>> =request.vars.lead_name else ""}}>
>>>>>                         {{=lead.Name}}
>>>>>                         </option>
>>>>>                     {{pass}}
>>>>>                 </select></td>
>>>>>                  <td><select id='block_name' name='block_name'>
>>>>>                     {{for block in blocks:}}
>>>>>                         <option value="{{=block.Name}}"
>>>>>                         {{=" selected='selected'" if str(block.Name)=
>>>>> =request.vars.block_name else ""}}>
>>>>>                         {{=block.Name}}
>>>>>                         </option>
>>>>>                     {{pass}}
>>>>>                 </select></td>
>>>>>                     <td></td>
>>>>>                     <td></td>
>>>>>                 <td><input type="submit" value='Submit'></td>
>>>>>                 </tr>
>>>>>             </form>
>>>>>
>>>>> My controller
>>>>>
>>>>> def index():
>>>>>     response.title='KR Quick Delivery Service'
>>>>>
>>>>>     if request.vars.model_name:
>>>>>         lists = db((db.KR_Product.Model==request.vars.model_name) & (
>>>>> db.KR_Product.Lead==request.vars.lead_name) & (db.KR_Product.Block==
>>>>> request.vars.block_name)).select(db.KR_Product.ALL)
>>>>>     else:
>>>>>         lists=''
>>>>>     models = db().select(db.KR_Model.ALL)
>>>>>     leads = db(db.KR_Lead.ModelName == '20').select(db.KR_Lead.ALL)
>>>>>     blocks = db(db.KR_Block.LeadName == '01').select(db.KR_Block.ALL)
>>>>>
>>>>>     return dict(lists=lists,models=models,leads=leads,blocks=blocks)
>>>>>
>>>>> def lead_ajax():
>>>>>     leads = db(db.KR_Lead.ModelName==request.vars.model_name).select(
>>>>> db.KR_Lead.ALL)
>>>>>     result = ''
>>>>>     for lead in leads:
>>>>>         result += "<option value='" + lead.Name + "'>" + lead.Name +
>>>>> "</option>"
>>>>>     return XML(result)
>>>>>
>>>>> def block_ajax():
>>>>>     blocks = db(db.KR_Block.LeadName==request.vars.lead_name).select(
>>>>> db.KR_Block.ALL)
>>>>>     result = ''
>>>>>     for block in blocks:
>>>>>         result += "<option value='" + block.Name + "'>" + block.Name +
>>>>> "</option>"
>>>>>     return XML(result)
>>>>>
>>>>>
>>>>>
>>>>>  --
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "web2py-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to web2py+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to